Sha256: 8bfb5cab8afbbd9c7fb3852c8a5fe0027076153205773cfe93bbd9ad4d280453

Contents?: true

Size: 973 Bytes

Versions: 6

Compression:

Stored size: 973 Bytes

Contents

require 'sequel'

if $wikore_db == :memory
  DB = Sequel.sqlite
else
  DB_FILE = __DIR__('wikore.db')
  DB = Sequel.connect("sqlite://#{DB_FILE}")
end

Sequel::Model.plugin :schema

module Model
  PAGE_SCHEMA = lambda{
    primary_key :id
    boolean :active, :default => true
    text    :text
    integer :version
  }

  class Page < Sequel::Model(:page)
    set_schema do
      instance_eval(&PAGE_SCHEMA)
      text :title, :unique => true, :null => false
    end

    def backup
      hash = @values.dup
      hash.delete :id
      OldPage.create(hash)
    end

    def revert
      backup = OldPage[:title => title].values.dup
      backup.delete :id
      delete
      self.class.create(backup)
    end
  end

  class OldPage < Sequel::Model(:old_page)
    set_schema do
      instance_eval(&PAGE_SCHEMA)
      text :title, :unique => false, :null => false
    end
  end

  [Page, OldPage].each do |klass|
    klass.create_table unless klass.table_exists?
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
manveru-ramaze-2009.04.22 examples/app/wikore/src/model.rb
manveru-ramaze-2009.04 examples/app/wikore/src/model.rb
manveru-ramaze-2009.05.08 examples/app/wikore/src/model.rb
manveru-ramaze-2009.05 examples/app/wikore/src/model.rb
ramaze-2009.04 examples/app/wikore/src/model.rb
ramaze-2009.05 examples/app/wikore/src/model.rb