Sha256: 0161a7d9e69fe30cf4bfb5987fb79fcd780962284ea659df3a466b5bb4cd52b4
Contents?: true
Size: 1.12 KB
Versions: 5
Compression:
Stored size: 1.12 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| begin klass.create_table rescue Sequel::DatabaseError => e if e.message !~ /table.*already exists/ raise e end end end end
Version data entries
5 entries across 5 versions & 2 rubygems