Module: DataMapper::Migrations::Sqlite3Adapter::SQL

Included in:
DataMapper::Migrations::Sqlite3Adapter
Defined in:
lib/dm-core/migrations.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#create_table_statement(connection, model, properties) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

TODO: document

API:

  • private



767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
# File 'lib/dm-core/migrations.rb', line 767

def create_table_statement(connection, model, properties)
  statement = "    CREATE TABLE \#{quote_name(model.storage_name(name))}\n    (\#{properties.map { |property| property_schema_statement(connection, property_schema_hash(property)) }.join(', ')}\n  SQL\n\n  # skip adding the primary key if one of the columns is serial.  In\n  # SQLite the serial column must be the primary key, so it has already\n  # been defined\n  unless properties.any? { |property| property.serial? }\n    statement << \", PRIMARY KEY(\#{properties.key.map { |property| quote_name(property.field) }.join(', ')})\"\n  end\n\n  statement << ')'\n  statement\nend\n".compress_lines

#property_schema_statement(connection, schema) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

TODO: document

API:

  • private



786
787
788
789
790
791
792
793
794
# File 'lib/dm-core/migrations.rb', line 786

def property_schema_statement(connection, schema)
  statement = super

  if supports_serial? && schema[:serial]
    statement << ' PRIMARY KEY AUTOINCREMENT'
  end

  statement
end

#query_table(table_name) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

TODO: document

API:

  • private



761
762
763
# File 'lib/dm-core/migrations.rb', line 761

def query_table(table_name)
  query("PRAGMA table_info(#{quote_name(table_name)})")
end

#sqlite_versionObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

TODO: document

API:

  • private



798
799
800
# File 'lib/dm-core/migrations.rb', line 798

def sqlite_version
  @sqlite_version ||= query('SELECT sqlite_version(*)').first.freeze
end

#supports_drop_table_if_exists?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

TODO: document

Returns:

API:

  • private



755
756
757
# File 'lib/dm-core/migrations.rb', line 755

def supports_drop_table_if_exists?
  @supports_drop_table_if_exists ||= sqlite_version >= '3.3.0'
end

#supports_serial?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

TODO: document

Returns:

API:

  • private



749
750
751
# File 'lib/dm-core/migrations.rb', line 749

def supports_serial?
  @supports_serial ||= sqlite_version >= '3.1.0'
end