Sha256: b10b57ef5055ce29b0d0b8659af9060dfaa0f9bbc90c5b2e8c50866e091b358e

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

# frozen_string_literal: true

require 'whatup'
require 'whatup/server/redirection'

module Whatup
  module Server
    module DbInit
      extend Redirection

      class << self
        def setup_db!
          db = "#{Whatup.root}/db/whatup.db"
          SQLite3::Database.new(db) unless File.exist?(db)

          ActiveRecord::Base.establish_connection adapter: 'sqlite3',
                                                  database: db

          ActiveRecord::Base.connection.execute <<~SQL
            DROP TABLE IF EXISTS clients_rooms;
            DROP TABLE IF EXISTS clients;
            DROP TABLE IF EXISTS messages;
            DROP TABLE IF EXISTS rooms;
          SQL

          redirect(stdout: StringIO.new) { create_tables! }
        end

        private

        def create_tables!
          ActiveRecord::Schema.define do
            create_table :clients, force: true do |t|
              t.string :name
              t.references :room
            end
            create_table :messages, force: true do |t|
              t.string :content
              t.references :sender
              t.references :recipient
            end
            create_table :rooms, force: true do |t|
              t.string :name
            end
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
whatup-0.2.5 lib/whatup/server/db_init.rb