Sha256: c66122202516b1a8a1a6cbde1e1d0267c53cd89e9b5c01faacc9a32fea7ccf8b

Contents?: true

Size: 1.01 KB

Versions: 6

Compression:

Stored size: 1.01 KB

Contents

require 'sequel'

begin
  case $wikore_db
  when :memory
    DB = Sequel.sqlite
  else
    DB_FILE = __DIR__/'wikore.db'
    DB = Sequel.connect("sqlite://#{DB_FILE}")
  end
rescue NoMethodError
  raise LoadError, 'Install latest Sequel gem'
end

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 & 3 rubygems

Version Path
Pistos-ramaze-2008.09 examples/app/wikore/src/model.rb
manveru-ramaze-2008.07 examples/app/wikore/src/model.rb
manveru-ramaze-2008.08 examples/app/wikore/src/model.rb
manveru-ramaze-2008.09 examples/app/wikore/src/model.rb
manveru-ramaze-2008.10 examples/app/wikore/src/model.rb
ramaze-2008.11 examples/app/wikore/src/model.rb