Sha256: 28cc740ff1cb1761f9eb18e95432ad2bdeb09c3037a6514288e67bda4b20ba7f

Contents?: true

Size: 1.41 KB

Versions: 16

Compression:

Stored size: 1.41 KB

Contents

module Sequel
  class Model
    # Defines a table schema (see Schema::Generator for more information).
    #
    # This is only needed if you want to use the create_table or drop_table
    # methods.
    def self.set_schema(name = nil, &block)
      name ? set_dataset(db[name]) : name = table_name
      @schema = Schema::Generator.new(db, name, &block)
      if @schema.primary_key_name
        set_primary_key @schema.primary_key_name
      end
    end
    
    # Returns table schema for direct descendant of Model.
    def self.schema
      @schema || ((superclass != Model) && (superclass.schema))
    end

    # Returns name of table.
    def self.table_name
      dataset.opts[:from].first
    end
    
    # Returns true if table exists, false otherwise.
    def self.table_exists?
      db.table_exists?(table_name)
    end
    
    # Creates table.
    def self.create_table
      db.create_table_sql_list(*schema.create_info).each {|s| db << s} 
    end
    
    # Drops table.
    def self.drop_table
      db.execute db.drop_table_sql(table_name)
    end
    
    # Like create_table but invokes drop_table when table_exists? is true.
    def self.create_table!
      drop_table if table_exists?
      create_table
    end
    
    # Deprecated, use create_table! instead.
    def self.recreate_table
      warn "Model.recreate_table is deprecated. Please use Model.create_table! instead."
      create_table!
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
sequel-0.3.0.1 lib/sequel/model/schema.rb
sequel-0.3.0 lib/sequel/model/schema.rb
sequel-0.4.0 lib/sequel-core/model/schema.rb
sequel-0.3.1 lib/sequel/model/schema.rb
sequel-0.3.4.1 lib/sequel/model/schema.rb
sequel-0.3.3 lib/sequel/model/schema.rb
sequel-0.3.2 lib/sequel/model/schema.rb
sequel-0.4.1.1 lib/sequel/model/schema.rb
sequel-0.4.1.3 lib/sequel/model/schema.rb
sequel-0.4.2.2 lib/sequel/model/schema.rb
sequel-0.4.1.2 lib/sequel/model/schema.rb
sequel-0.4.2.1 lib/sequel/model/schema.rb
sequel-0.4.1 lib/sequel/model/schema.rb
sequel-0.4.2 lib/sequel/model/schema.rb
sequel-0.4.3 lib/sequel/model/schema.rb
sequel-0.4.4 lib/sequel/model/schema.rb