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