Class: Terrestrial::Adapters::SequelPostgresAdapter
- Inherits:
-
Object
- Object
- Terrestrial::Adapters::SequelPostgresAdapter
- Extended by:
- Forwardable
- Includes:
- AbstractAdapter
- Defined in:
- lib/terrestrial/adapters/sequel_postgres_adapter.rb
Defined Under Namespace
Classes: Dataset
Instance Method Summary collapse
- #[](table_name) ⇒ Object
- #changes_sql(record) ⇒ Object
- #conflict_fields(table_name) ⇒ Object
- #delete(record) ⇒ Object
-
#initialize(database) ⇒ SequelPostgresAdapter
constructor
A new instance of SequelPostgresAdapter.
- #primary_key(table_name) ⇒ Object
- #relation_fields(relation_name) ⇒ Object
- #relations ⇒ Object
- #schema(relation_name) ⇒ Object
- #unique_indexes(table_name) ⇒ Object
- #upsert(record) ⇒ Object
Constructor Details
#initialize(database) ⇒ SequelPostgresAdapter
Returns a new instance of SequelPostgresAdapter.
31 32 33 |
# File 'lib/terrestrial/adapters/sequel_postgres_adapter.rb', line 31 def initialize(database) @database = database end |
Instance Method Details
#[](table_name) ⇒ Object
43 44 45 |
# File 'lib/terrestrial/adapters/sequel_postgres_adapter.rb', line 43 def [](table_name) Dataset.new(database[table_name]) end |
#changes_sql(record) ⇒ Object
59 60 61 62 63 |
# File 'lib/terrestrial/adapters/sequel_postgres_adapter.rb', line 59 def changes_sql(record) generate_upsert_sql(record) rescue Object => e raise UpsertError.new(record.namespace, record.to_h, e) end |
#conflict_fields(table_name) ⇒ Object
65 66 67 |
# File 'lib/terrestrial/adapters/sequel_postgres_adapter.rb', line 65 def conflict_fields(table_name) primary_key(table_name) end |
#delete(record) ⇒ Object
55 56 57 |
# File 'lib/terrestrial/adapters/sequel_postgres_adapter.rb', line 55 def delete(record) database[record.namespace].where(record.identity).delete end |
#primary_key(table_name) ⇒ Object
69 70 71 72 73 |
# File 'lib/terrestrial/adapters/sequel_postgres_adapter.rb', line 69 def primary_key(table_name) [database.primary_key(table_name)] .compact .map(&:to_sym) end |
#relation_fields(relation_name) ⇒ Object
85 86 87 |
# File 'lib/terrestrial/adapters/sequel_postgres_adapter.rb', line 85 def relation_fields(relation_name) database[relation_name].columns end |
#relations ⇒ Object
81 82 83 |
# File 'lib/terrestrial/adapters/sequel_postgres_adapter.rb', line 81 def relations database.tables - [:schema_migrations] end |
#schema(relation_name) ⇒ Object
89 90 91 |
# File 'lib/terrestrial/adapters/sequel_postgres_adapter.rb', line 89 def schema(relation_name) database.schema(relation_name) end |
#unique_indexes(table_name) ⇒ Object
75 76 77 78 79 |
# File 'lib/terrestrial/adapters/sequel_postgres_adapter.rb', line 75 def unique_indexes(table_name) database.indexes(table_name).map { |_name, data| data.fetch(:columns) } end |
#upsert(record) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/terrestrial/adapters/sequel_postgres_adapter.rb', line 47 def upsert(record) row = perform_upsert_returning_row(record) record.on_upsert(row) nil rescue Object => e raise UpsertError.new(record.namespace, record.to_h, e) end |