Module: DataMapper::Adapters::Sqlite3Adapter::Migration::SQL
- Included in:
- DataMapper::Adapters::Sqlite3Adapter::Migration
- Defined in:
- lib/dm-core/adapters/sqlite3_adapter.rb
Instance Method Summary collapse
-
#create_table_statement(repository, model) ⇒ Object
TODO: move to dm-more/dm-migrations.
-
#property_schema_statement(schema) ⇒ Object
TODO: move to dm-more/dm-migrations.
-
#sqlite_version ⇒ Object
TODO: move to dm-more/dm-migrations.
-
#supports_serial? ⇒ Boolean
TODO: move to dm-more/dm-migrations.
Instance Method Details
#create_table_statement(repository, model) ⇒ Object
TODO: move to dm-more/dm-migrations
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/dm-core/adapters/sqlite3_adapter.rb', line 52 def create_table_statement(repository, model) statement = " CREATE TABLE \#{quote_table_name(model.storage_name(repository.name))}\n (\#{model.properties_with_subclasses(repository.name).map { |p| property_schema_statement(property_schema_hash(repository, p)) } * ', '}\n EOS\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 model.properties(repository.name).any? { |p| p.serial? }\n if (key = model.properties(repository.name).key).any?\n statement << \", PRIMARY KEY(\#{key.map { |p| quote_column_name(p.field(repository.name)) } * ', '})\"\n end\n end\n\n statement << ')'\n statement\nend\n".compress_lines |
#property_schema_statement(schema) ⇒ Object
TODO: move to dm-more/dm-migrations
72 73 74 75 76 |
# File 'lib/dm-core/adapters/sqlite3_adapter.rb', line 72 def property_schema_statement(schema) statement = super statement << ' PRIMARY KEY AUTOINCREMENT' if supports_serial? && schema[:serial?] statement end |
#sqlite_version ⇒ Object
TODO: move to dm-more/dm-migrations
79 80 81 |
# File 'lib/dm-core/adapters/sqlite3_adapter.rb', line 79 def sqlite_version @sqlite_version ||= query('SELECT sqlite_version(*)').first end |
#supports_serial? ⇒ Boolean
TODO: move to dm-more/dm-migrations
47 48 49 |
# File 'lib/dm-core/adapters/sqlite3_adapter.rb', line 47 def supports_serial? sqlite_version >= '3.1.0' end |