Class: DataMapper::Adapters::PostgresqlAdapter::Mappings::Table
- Defined in:
- lib/data_mapper/adapters/postgresql_adapter.rb
Instance Method Summary collapse
- #sequence_sql ⇒ Object
- #to_create_table_sql ⇒ Object
-
#unquote_default(default) ⇒ Object
The logic of this comes from AR; it was modified for smarter typecasting.
Instance Method Details
#sequence_sql ⇒ Object
65 66 67 |
# File 'lib/data_mapper/adapters/postgresql_adapter.rb', line 65 def sequence_sql @sequence_sql ||= quote_table("_id_seq").freeze end |
#to_create_table_sql ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/data_mapper/adapters/postgresql_adapter.rb', line 69 def to_create_table_sql schema_name = name.index('.') ? name.split('.').first : nil schema_list = @adapter.query('SELECT nspname FROM pg_namespace').join(',') sql = if schema_name and !schema_list.include?(schema_name) "CREATE SCHEMA #{@adapter.quote_table_name(schema_name)}; " else '' end sql << "CREATE TABLE " << to_sql sql << " (" << columns.map do |column| column.to_long_form end.join(', ') << ")" return sql end |
#unquote_default(default) ⇒ Object
The logic of this comes from AR; it was modified for smarter typecasting
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/data_mapper/adapters/postgresql_adapter.rb', line 89 def unquote_default(default) # Boolean types return true if default =~ /true/i return false if default =~ /false/i # Char/String/Bytea type values return $1 if default =~ /^'(.*)'::(bpchar|text|character varying|bytea)$/ # Numeric values return value.to_f if default =~ /^-?[0-9]+(\.[0-9]*)/ return value.to_i if default =~ /^-?[0-9]+/ # Fixed dates / times return Date.parse($1) if default =~ /^'(.+)'::date/ return DateTime.parse($1) if default =~ /^'(.+)'::timestamp/ # Anything else is blank, some user type, or some function # and we can't know the value of that, so return nil. return nil end |