dynamic_migrations 2.2.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/lib/dynamic_migrations/active_record/migrators/column.rb +21 -0
  4. data/lib/dynamic_migrations/active_record/migrators/foreign_key_constraint.rb +112 -0
  5. data/lib/dynamic_migrations/active_record/migrators/function.rb +108 -0
  6. data/lib/dynamic_migrations/active_record/migrators/index.rb +27 -0
  7. data/lib/dynamic_migrations/active_record/migrators/schema.rb +21 -0
  8. data/lib/dynamic_migrations/active_record/migrators/table.rb +21 -0
  9. data/lib/dynamic_migrations/active_record/migrators/trigger.rb +109 -0
  10. data/lib/dynamic_migrations/active_record/migrators/unique_constraint.rb +63 -0
  11. data/lib/dynamic_migrations/active_record/migrators/validation.rb +67 -0
  12. data/lib/dynamic_migrations/active_record/migrators.rb +64 -0
  13. data/lib/dynamic_migrations/name_helper.rb +13 -0
  14. data/lib/dynamic_migrations/postgres/generator/column.rb +92 -0
  15. data/lib/dynamic_migrations/postgres/generator/foreign_key_constraint.rb +84 -0
  16. data/lib/dynamic_migrations/postgres/generator/fragment.rb +30 -0
  17. data/lib/dynamic_migrations/postgres/generator/function.rb +77 -0
  18. data/lib/dynamic_migrations/postgres/generator/index.rb +101 -0
  19. data/lib/dynamic_migrations/postgres/generator/primary_key.rb +55 -0
  20. data/lib/dynamic_migrations/postgres/generator/schema.rb +19 -0
  21. data/lib/dynamic_migrations/postgres/generator/schema_migrations/section.rb +37 -0
  22. data/lib/dynamic_migrations/postgres/generator/schema_migrations.rb +92 -0
  23. data/lib/dynamic_migrations/postgres/generator/table.rb +122 -0
  24. data/lib/dynamic_migrations/postgres/generator/trigger.rb +101 -0
  25. data/lib/dynamic_migrations/postgres/generator/unique_constraint.rb +79 -0
  26. data/lib/dynamic_migrations/postgres/generator/validation.rb +87 -0
  27. data/lib/dynamic_migrations/postgres/generator.rb +359 -0
  28. data/lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/functions.rb +68 -0
  29. data/lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/columns.rb +72 -0
  30. data/lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/foreign_key_constraints.rb +73 -0
  31. data/lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/indexes.rb +73 -0
  32. data/lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/primary_key.rb +49 -0
  33. data/lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/triggers.rb +73 -0
  34. data/lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/unique_constraints.rb +73 -0
  35. data/lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/validations.rb +73 -0
  36. data/lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables.rb +80 -0
  37. data/lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas.rb +48 -0
  38. data/lib/dynamic_migrations/postgres/server/database/differences/to_migrations.rb +59 -0
  39. data/lib/dynamic_migrations/postgres/server/database/differences.rb +75 -6
  40. data/lib/dynamic_migrations/postgres/server/database/keys_and_unique_constraints_loader.rb +35 -9
  41. data/lib/dynamic_migrations/postgres/server/database/loaded_schemas_builder.rb +49 -8
  42. data/lib/dynamic_migrations/postgres/server/database/schema/function.rb +69 -0
  43. data/lib/dynamic_migrations/postgres/server/database/schema/functions.rb +63 -0
  44. data/lib/dynamic_migrations/postgres/server/database/schema/table/column.rb +4 -0
  45. data/lib/dynamic_migrations/postgres/server/database/schema/table/columns.rb +1 -1
  46. data/lib/dynamic_migrations/postgres/server/database/schema/table/foreign_key_constraint.rb +40 -5
  47. data/lib/dynamic_migrations/postgres/server/database/schema/table/index.rb +23 -9
  48. data/lib/dynamic_migrations/postgres/server/database/schema/table/primary_key.rb +21 -6
  49. data/lib/dynamic_migrations/postgres/server/database/schema/table/trigger.rb +151 -0
  50. data/lib/dynamic_migrations/postgres/server/database/schema/table/triggers.rb +66 -0
  51. data/lib/dynamic_migrations/postgres/server/database/schema/table/unique_constraint.rb +19 -9
  52. data/lib/dynamic_migrations/postgres/server/database/schema/table/validation.rb +20 -1
  53. data/lib/dynamic_migrations/postgres/server/database/schema/table.rb +15 -5
  54. data/lib/dynamic_migrations/postgres/server/database/schema/tables.rb +63 -0
  55. data/lib/dynamic_migrations/postgres/server/database/schema.rb +3 -49
  56. data/lib/dynamic_migrations/postgres/server/database/source.rb +21 -0
  57. data/lib/dynamic_migrations/postgres/server/database/structure_loader.rb +6 -6
  58. data/lib/dynamic_migrations/postgres/server/database/triggers_and_functions_loader.rb +131 -0
  59. data/lib/dynamic_migrations/postgres/server/database/validations_loader.rb +10 -4
  60. data/lib/dynamic_migrations/postgres/server/database.rb +2 -1
  61. data/lib/dynamic_migrations/postgres/server.rb +6 -0
  62. data/lib/dynamic_migrations/postgres.rb +1 -1
  63. data/lib/dynamic_migrations/version.rb +1 -1
  64. data/lib/dynamic_migrations.rb +47 -3
  65. metadata +44 -2
@@ -0,0 +1,131 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DynamicMigrations
4
+ module Postgres
5
+ class Server
6
+ class Database
7
+ module TriggersAndFunctionsLoader
8
+ class EventTriggerProcedureSchemaMismatchError < StandardError
9
+ end
10
+
11
+ # fetch all columns from the database and build and return a
12
+ # useful hash representing the triggers_and_functions of your database
13
+ #
14
+ # this query is very fast, so does not need cached (a materialized view)
15
+ def fetch_triggers_and_functions
16
+ rows = connection.exec(<<~SQL)
17
+ SELECT
18
+ n.nspname AS trigger_schema,
19
+ t.tgname AS trigger_name,
20
+ em.text AS event_manipulation,
21
+ n.nspname AS event_object_schema,
22
+ c.relname AS event_object_table,
23
+ rank() OVER (
24
+ PARTITION BY (n.nspname),
25
+ (c.relname),
26
+ em.num,
27
+ (t.tgtype & 1),
28
+ (t.tgtype & 66)
29
+ ORDER BY
30
+ t.tgname
31
+ ) AS action_order,
32
+ CASE WHEN pg_has_role(c.relowner, 'USAGE') THEN (
33
+ regexp_match(
34
+ pg_get_triggerdef(t.oid),
35
+ '.{35,} WHEN ((.+)) EXECUTE FUNCTION'
36
+ )
37
+ ) [1] ELSE NULL END AS action_condition,
38
+ p_n.nspname AS function_schema,
39
+ p.proname AS function_name,
40
+ p.prosrc AS function_definition,
41
+ SUBSTRING(
42
+ pg_get_triggerdef(t.oid)
43
+ FROM
44
+ POSITION(
45
+ ('EXECUTE FUNCTION') IN (
46
+ SUBSTRING(
47
+ pg_get_triggerdef(t.oid)
48
+ FROM
49
+ 48
50
+ )
51
+ )
52
+ ) + 47
53
+ ) AS action_statement,
54
+ CASE t.tgtype & 1 WHEN 1 THEN 'row' ELSE 'statement' END AS action_orientation,
55
+ CASE t.tgtype & 66 WHEN 2 THEN 'before' WHEN 64 THEN 'instead_of' ELSE 'after' END AS action_timing,
56
+ t.tgoldtable AS action_reference_old_table,
57
+ t.tgnewtable AS action_reference_new_table,
58
+ obj_description(t.oid, 'pg_trigger') as description,
59
+ obj_description(p.oid, 'pg_proc') as function_description
60
+ FROM
61
+ -- trigger tables
62
+ pg_namespace n,
63
+ pg_class c,
64
+ pg_trigger t,
65
+ -- procedure tables
66
+ pg_proc p,
67
+ pg_namespace p_n,
68
+ (
69
+ VALUES
70
+ (4, 'insert'),
71
+ (8, 'delete'),
72
+ (16, 'update')
73
+ ) em(num, text)
74
+ WHERE
75
+ n.oid = c.relnamespace
76
+ AND c.oid = t.tgrelid
77
+ AND p.oid = t.tgfoid
78
+ AND p_n.oid = p.pronamespace
79
+ AND (t.tgtype & em.num) <> 0
80
+ AND NOT t.tgisinternal
81
+ AND NOT pg_is_other_temp_schema(n.oid)
82
+ AND (
83
+ pg_has_role(c.relowner, 'USAGE')
84
+ OR has_table_privilege(
85
+ c.oid, 'INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER'
86
+ )
87
+ OR has_any_column_privilege(
88
+ c.oid, 'INSERT, UPDATE, REFERENCES'
89
+ )
90
+ );
91
+ SQL
92
+
93
+ schemas = {}
94
+ rows.each do |row|
95
+ trigger_name = row["trigger_name"].to_sym
96
+ event_object_schema = row["event_object_schema"].to_sym
97
+ event_object_table = row["event_object_table"].to_sym
98
+
99
+ schema = schemas[event_object_schema] ||= {}
100
+ table = schema[event_object_table] ||= {}
101
+
102
+ # by convention (and to simplify things) we place these all in the same schema
103
+ unless row["trigger_schema"] == row["function_schema"] && row["function_schema"] == row["event_object_schema"]
104
+ raise EventTriggerProcedureSchemaMismatchError, "Expected trigger, procedure and event_object to be in the same schema for trigger '#{trigger_name}'"
105
+ end
106
+
107
+ table[trigger_name] = {
108
+ trigger_schema: row["trigger_schema"].to_sym,
109
+ event_manipulation: row["event_manipulation"].to_sym,
110
+ action_order: row["action_order"].to_i,
111
+ action_condition: row["action_condition"],
112
+ function_schema: row["function_schema"].to_sym,
113
+ function_name: row["function_name"].to_sym,
114
+ function_definition: row["function_definition"],
115
+ action_statement: row["action_statement"],
116
+ action_orientation: row["action_orientation"].to_sym,
117
+ action_timing: row["action_timing"].to_sym,
118
+ # `action_reference_old_table` and `action_reference_new_table` can be null
119
+ action_reference_old_table: row["action_reference_old_table"]&.to_sym,
120
+ action_reference_new_table: row["action_reference_new_table"]&.to_sym,
121
+ description: row["description"],
122
+ function_description: row["function_description"]
123
+ }
124
+ end
125
+ schemas
126
+ end
127
+ end
128
+ end
129
+ end
130
+ end
131
+ end
@@ -12,7 +12,9 @@ module DynamicMigrations
12
12
  table_constraints.table_name,
13
13
  array_agg(col.column_name ORDER BY col.column_name) AS columns,
14
14
  table_constraints.constraint_name as validation_name,
15
- check_constraints.check_clause,
15
+ pg_get_expr(conbin, conrelid, true) as check_clause,
16
+ obj_description(pgc.oid, 'pg_constraint') as description,
17
+ -- in case we need to update this query in a later version of DynamicMigrations
16
18
  1 as table_version
17
19
  FROM information_schema.table_constraints
18
20
  JOIN information_schema.check_constraints
@@ -30,6 +32,7 @@ module DynamicMigrations
30
32
  AND table_constraints.constraint_schema != 'postgis'
31
33
  AND left(table_constraints.constraint_schema, 3) != 'pg_'
32
34
  GROUP BY
35
+ pgc.oid,
33
36
  table_constraints.table_schema,
34
37
  table_constraints.table_name,
35
38
  table_constraints.constraint_name,
@@ -47,12 +50,12 @@ module DynamicMigrations
47
50
  # useful hash representing the validations of your database
48
51
  def fetch_validations
49
52
  begin
50
- rows = connection.exec_params(<<~SQL)
53
+ rows = connection.exec(<<~SQL)
51
54
  SELECT * FROM public.dynamic_migrations_validations_cache
52
55
  SQL
53
56
  rescue PG::UndefinedTable
54
57
  create_database_validations_cache
55
- rows = connection.exec_params(<<~SQL)
58
+ rows = connection.exec(<<~SQL)
56
59
  SELECT * FROM public.dynamic_migrations_validations_cache
57
60
  SQL
58
61
  end
@@ -69,7 +72,10 @@ module DynamicMigrations
69
72
 
70
73
  table[validation_name] = {
71
74
  columns: row["columns"].gsub(/\A\{/, "").gsub(/\}\Z/, "").split(",").map { |column_name| column_name.to_sym },
72
- check_clause: row["check_clause"]
75
+ check_clause: row["check_clause"],
76
+ description: row["description"],
77
+ deferrable: row["deferrable"] == "TRUE",
78
+ initially_deferred: row["initially_deferred"] == "TRUE"
73
79
  }
74
80
  end
75
81
  schemas
@@ -13,6 +13,7 @@ module DynamicMigrations
13
13
  include StructureLoader
14
14
  include ValidationsLoader
15
15
  include KeysAndUniqueConstraintsLoader
16
+ include TriggersAndFunctionsLoader
16
17
  include LoadedSchemas
17
18
  include ConfiguredSchemas
18
19
  include LoadedSchemasBuilder
@@ -46,7 +47,7 @@ module DynamicMigrations
46
47
  end
47
48
 
48
49
  def differences
49
- Differences.new(self).to_h
50
+ Differences.new(self)
50
51
  end
51
52
  end
52
53
  end
@@ -32,6 +32,12 @@ module DynamicMigrations
32
32
  def databases
33
33
  @databases.values
34
34
  end
35
+
36
+ def migrations
37
+ databases.each_with_object({}) { |database, result|
38
+ result[database.name] = database.differences.to_migrations
39
+ }
40
+ end
35
41
  end
36
42
  end
37
43
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module DynamicMigrations
4
4
  # This module exists only to namespace Postgres functionality and
5
- # make it possible to add other database/storage types in the futur.
5
+ # make it possible to add other database/storage types in the future.
6
6
  module Postgres
7
7
  end
8
8
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DynamicMigrations
4
- VERSION = "2.2.0"
4
+ VERSION = "3.0.0"
5
5
  end
@@ -14,30 +14,74 @@ require "dynamic_migrations/postgres/server/database/connection"
14
14
  require "dynamic_migrations/postgres/server/database/structure_loader"
15
15
  require "dynamic_migrations/postgres/server/database/validations_loader"
16
16
  require "dynamic_migrations/postgres/server/database/keys_and_unique_constraints_loader"
17
+ require "dynamic_migrations/postgres/server/database/triggers_and_functions_loader"
17
18
  require "dynamic_migrations/postgres/server/database/loaded_schemas_builder"
18
- require "dynamic_migrations/postgres/server/database/differences"
19
19
  require "dynamic_migrations/postgres/server/database/loaded_schemas"
20
20
  require "dynamic_migrations/postgres/server/database/configured_schemas"
21
+
22
+ require "dynamic_migrations/postgres/server/database/differences"
23
+ require "dynamic_migrations/postgres/server/database/differences/to_migrations/schemas"
24
+ require "dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables"
25
+ require "dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/columns"
26
+ require "dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/foreign_key_constraints"
27
+ require "dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/indexes"
28
+ require "dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/primary_key"
29
+ require "dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/triggers"
30
+ require "dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/unique_constraints"
31
+ require "dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/validations"
32
+ require "dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/functions"
33
+ require "dynamic_migrations/postgres/server/database/differences/to_migrations"
34
+
21
35
  require "dynamic_migrations/postgres/server/database"
22
36
  require "dynamic_migrations/postgres/server/database/source"
37
+
38
+ require "dynamic_migrations/postgres/server/database/schema/tables"
39
+ require "dynamic_migrations/postgres/server/database/schema/functions"
23
40
  require "dynamic_migrations/postgres/server/database/schema"
41
+ require "dynamic_migrations/postgres/server/database/schema/function"
24
42
  require "dynamic_migrations/postgres/server/database/schema/table/validations"
25
43
  require "dynamic_migrations/postgres/server/database/schema/table/indexes"
26
44
  require "dynamic_migrations/postgres/server/database/schema/table/foreign_key_constraints"
27
45
  require "dynamic_migrations/postgres/server/database/schema/table/unique_constraints"
28
46
  require "dynamic_migrations/postgres/server/database/schema/table/columns"
47
+ require "dynamic_migrations/postgres/server/database/schema/table/triggers"
29
48
  require "dynamic_migrations/postgres/server/database/schema/table"
30
49
  require "dynamic_migrations/postgres/server/database/schema/table/column"
31
50
  require "dynamic_migrations/postgres/server/database/schema/table/validation"
32
51
  require "dynamic_migrations/postgres/server/database/schema/table/foreign_key_constraint"
33
52
  require "dynamic_migrations/postgres/server/database/schema/table/index"
34
53
  require "dynamic_migrations/postgres/server/database/schema/table/primary_key"
54
+ require "dynamic_migrations/postgres/server/database/schema/table/trigger"
35
55
  require "dynamic_migrations/postgres/server/database/schema/table/unique_constraint"
36
56
 
37
57
  require "dynamic_migrations/postgres/server"
38
58
  require "dynamic_migrations/postgres/connections"
39
59
 
60
+ require "dynamic_migrations/postgres/generator/schema"
61
+ require "dynamic_migrations/postgres/generator/table"
62
+ require "dynamic_migrations/postgres/generator/column"
63
+ require "dynamic_migrations/postgres/generator/foreign_key_constraint"
64
+ require "dynamic_migrations/postgres/generator/function"
65
+ require "dynamic_migrations/postgres/generator/index"
66
+ require "dynamic_migrations/postgres/generator/primary_key"
67
+ require "dynamic_migrations/postgres/generator/trigger"
68
+ require "dynamic_migrations/postgres/generator/unique_constraint"
69
+ require "dynamic_migrations/postgres/generator/validation"
70
+ require "dynamic_migrations/postgres/generator"
71
+ require "dynamic_migrations/postgres/generator/fragment"
72
+ require "dynamic_migrations/postgres/generator/schema_migrations"
73
+ require "dynamic_migrations/postgres/generator/schema_migrations/section"
74
+
75
+ require "dynamic_migrations/active_record/migrators/schema"
76
+ require "dynamic_migrations/active_record/migrators/validation"
77
+ require "dynamic_migrations/active_record/migrators/foreign_key_constraint"
78
+ require "dynamic_migrations/active_record/migrators/unique_constraint"
79
+ require "dynamic_migrations/active_record/migrators/function"
80
+ require "dynamic_migrations/active_record/migrators/trigger"
81
+ require "dynamic_migrations/active_record/migrators/table"
82
+ require "dynamic_migrations/active_record/migrators/index"
83
+ require "dynamic_migrations/active_record/migrators/column"
84
+ require "dynamic_migrations/active_record/migrators"
85
+
40
86
  module DynamicMigrations
41
- class Error < StandardError
42
- end
43
87
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamic_migrations
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Craig Ulliott
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-31 00:00:00.000000000 Z
11
+ date: 2023-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -65,23 +65,61 @@ files:
65
65
  - LICENSE.txt
66
66
  - README.md
67
67
  - lib/dynamic_migrations.rb
68
+ - lib/dynamic_migrations/active_record/migrators.rb
69
+ - lib/dynamic_migrations/active_record/migrators/column.rb
70
+ - lib/dynamic_migrations/active_record/migrators/foreign_key_constraint.rb
71
+ - lib/dynamic_migrations/active_record/migrators/function.rb
72
+ - lib/dynamic_migrations/active_record/migrators/index.rb
73
+ - lib/dynamic_migrations/active_record/migrators/schema.rb
74
+ - lib/dynamic_migrations/active_record/migrators/table.rb
75
+ - lib/dynamic_migrations/active_record/migrators/trigger.rb
76
+ - lib/dynamic_migrations/active_record/migrators/unique_constraint.rb
77
+ - lib/dynamic_migrations/active_record/migrators/validation.rb
68
78
  - lib/dynamic_migrations/expected_boolean_error.rb
69
79
  - lib/dynamic_migrations/expected_integer_error.rb
70
80
  - lib/dynamic_migrations/expected_string_error.rb
71
81
  - lib/dynamic_migrations/expected_symbol_error.rb
72
82
  - lib/dynamic_migrations/invalid_source_error.rb
73
83
  - lib/dynamic_migrations/module_included_into_unexpected_target_error.rb
84
+ - lib/dynamic_migrations/name_helper.rb
74
85
  - lib/dynamic_migrations/postgres.rb
75
86
  - lib/dynamic_migrations/postgres/connections.rb
87
+ - lib/dynamic_migrations/postgres/generator.rb
88
+ - lib/dynamic_migrations/postgres/generator/column.rb
89
+ - lib/dynamic_migrations/postgres/generator/foreign_key_constraint.rb
90
+ - lib/dynamic_migrations/postgres/generator/fragment.rb
91
+ - lib/dynamic_migrations/postgres/generator/function.rb
92
+ - lib/dynamic_migrations/postgres/generator/index.rb
93
+ - lib/dynamic_migrations/postgres/generator/primary_key.rb
94
+ - lib/dynamic_migrations/postgres/generator/schema.rb
95
+ - lib/dynamic_migrations/postgres/generator/schema_migrations.rb
96
+ - lib/dynamic_migrations/postgres/generator/schema_migrations/section.rb
97
+ - lib/dynamic_migrations/postgres/generator/table.rb
98
+ - lib/dynamic_migrations/postgres/generator/trigger.rb
99
+ - lib/dynamic_migrations/postgres/generator/unique_constraint.rb
100
+ - lib/dynamic_migrations/postgres/generator/validation.rb
76
101
  - lib/dynamic_migrations/postgres/server.rb
77
102
  - lib/dynamic_migrations/postgres/server/database.rb
78
103
  - lib/dynamic_migrations/postgres/server/database/configured_schemas.rb
79
104
  - lib/dynamic_migrations/postgres/server/database/connection.rb
80
105
  - lib/dynamic_migrations/postgres/server/database/differences.rb
106
+ - lib/dynamic_migrations/postgres/server/database/differences/to_migrations.rb
107
+ - lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas.rb
108
+ - lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/functions.rb
109
+ - lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables.rb
110
+ - lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/columns.rb
111
+ - lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/foreign_key_constraints.rb
112
+ - lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/indexes.rb
113
+ - lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/primary_key.rb
114
+ - lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/triggers.rb
115
+ - lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/unique_constraints.rb
116
+ - lib/dynamic_migrations/postgres/server/database/differences/to_migrations/schemas/tables/validations.rb
81
117
  - lib/dynamic_migrations/postgres/server/database/keys_and_unique_constraints_loader.rb
82
118
  - lib/dynamic_migrations/postgres/server/database/loaded_schemas.rb
83
119
  - lib/dynamic_migrations/postgres/server/database/loaded_schemas_builder.rb
84
120
  - lib/dynamic_migrations/postgres/server/database/schema.rb
121
+ - lib/dynamic_migrations/postgres/server/database/schema/function.rb
122
+ - lib/dynamic_migrations/postgres/server/database/schema/functions.rb
85
123
  - lib/dynamic_migrations/postgres/server/database/schema/table.rb
86
124
  - lib/dynamic_migrations/postgres/server/database/schema/table/column.rb
87
125
  - lib/dynamic_migrations/postgres/server/database/schema/table/columns.rb
@@ -90,12 +128,16 @@ files:
90
128
  - lib/dynamic_migrations/postgres/server/database/schema/table/index.rb
91
129
  - lib/dynamic_migrations/postgres/server/database/schema/table/indexes.rb
92
130
  - lib/dynamic_migrations/postgres/server/database/schema/table/primary_key.rb
131
+ - lib/dynamic_migrations/postgres/server/database/schema/table/trigger.rb
132
+ - lib/dynamic_migrations/postgres/server/database/schema/table/triggers.rb
93
133
  - lib/dynamic_migrations/postgres/server/database/schema/table/unique_constraint.rb
94
134
  - lib/dynamic_migrations/postgres/server/database/schema/table/unique_constraints.rb
95
135
  - lib/dynamic_migrations/postgres/server/database/schema/table/validation.rb
96
136
  - lib/dynamic_migrations/postgres/server/database/schema/table/validations.rb
137
+ - lib/dynamic_migrations/postgres/server/database/schema/tables.rb
97
138
  - lib/dynamic_migrations/postgres/server/database/source.rb
98
139
  - lib/dynamic_migrations/postgres/server/database/structure_loader.rb
140
+ - lib/dynamic_migrations/postgres/server/database/triggers_and_functions_loader.rb
99
141
  - lib/dynamic_migrations/postgres/server/database/validations_loader.rb
100
142
  - lib/dynamic_migrations/version.rb
101
143
  homepage: