require 'digest/sha1'
require 'sequel'
require 'sequel/extensions/migration'

Sequel::Model.db =
  if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
    require 'jdbc/sqlite3'
    Sequel.connect('jdbc:sqlite::memory:')
  else
    require 'sqlite3'
    Sequel.sqlite(':memory:')
  end

migration = Sequel.migration do
  up do
    create_table :accounts do
      primary_key :id
      String :name
      String :surname
      String :email
      String :crypted_password
      String :role
    end

    create_table :sections do
      primary_key :id
      foreign_key :account_id
      String :name
    end

    create_table :friends do
      primary_key :id
      String :name
      String :age
      String :email
    end

    create_table :pages do
      primary_key :id
      String :name
      String :body
    end
  end

  down do
    drop_table :accounts
  end
end

migration.apply(Sequel::Model.db, :up)

class Friend < Sequel::Model
end

class Page < Sequel::Model
end

# Fake Section Model
class Section < Sequel::Model
  many_to_one :account
end

# Fake Account Model
class Account < Sequel::Model
  attr_accessor :password, :password_confirmation

  one_to_many :sections

  def self.admin;  first(role: 'admin');  end
  def self.editor; first(role: 'editor'); end

  ##
  # Replace ActiveRecord method.
  #
  def self.find_by_id(id)
    self[id] rescue nil
  end
end

# We build some fake accounts
admin  = Account.create(name: 'DAddYE', role: 'admin',  email: 'd.dagostino@lipsiasoft.com',
                        password: 'some', password_confirmation: 'some')
editor = Account.create(name: 'Dexter', role: 'editor', email: 'editor@lipsiasoft.com',
                        password: 'some', password_confirmation: 'some')

%w[News Press HowTo].each do |c|
  admin.add_section(name: c)
  editor.add_section(name: c)
end
