dynamic_migrations 3.1.0 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (24) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/lib/dynamic_migrations/postgres/generator/column.rb +44 -19
  4. data/lib/dynamic_migrations/postgres/generator/foreign_key_constraint.rb +35 -14
  5. data/lib/dynamic_migrations/postgres/generator/fragment.rb +37 -2
  6. data/lib/dynamic_migrations/postgres/generator/function.rb +50 -25
  7. data/lib/dynamic_migrations/postgres/generator/index.rb +34 -14
  8. data/lib/dynamic_migrations/postgres/generator/migration.rb +175 -0
  9. data/lib/dynamic_migrations/postgres/generator/migration_dependency_sorter.rb +21 -0
  10. data/lib/dynamic_migrations/postgres/generator/primary_key.rb +16 -6
  11. data/lib/dynamic_migrations/postgres/generator/schema.rb +14 -6
  12. data/lib/dynamic_migrations/postgres/generator/schema_migration.rb +17 -0
  13. data/lib/dynamic_migrations/postgres/generator/table.rb +39 -19
  14. data/lib/dynamic_migrations/postgres/generator/table_migration.rb +51 -0
  15. data/lib/dynamic_migrations/postgres/generator/trigger.rb +34 -14
  16. data/lib/dynamic_migrations/postgres/generator/unique_constraint.rb +34 -14
  17. data/lib/dynamic_migrations/postgres/generator/validation.rb +38 -18
  18. data/lib/dynamic_migrations/postgres/generator.rb +163 -294
  19. data/lib/dynamic_migrations/postgres/server/database/connection.rb +15 -0
  20. data/lib/dynamic_migrations/version.rb +1 -1
  21. data/lib/dynamic_migrations.rb +4 -2
  22. metadata +6 -4
  23. data/lib/dynamic_migrations/postgres/generator/schema_migrations/section.rb +0 -37
  24. data/lib/dynamic_migrations/postgres/generator/schema_migrations.rb +0 -92
@@ -1,92 +0,0 @@
1
- module DynamicMigrations
2
- module Postgres
3
- class Generator
4
- class SchemaMigrations
5
- class SectionNotFoundError < StandardError
6
- end
7
-
8
- attr_reader :current_migration_sections
9
-
10
- def initialize
11
- @migrations = []
12
- @current_migration_sections = []
13
- end
14
-
15
- def add_fragment schema_name, table_name, content_type, fragment
16
- @current_migration_sections << Section.new(schema_name, table_name, content_type, fragment)
17
- end
18
-
19
- def finalize
20
- if @current_migration_sections.any?
21
-
22
- contents = []
23
- @current_migration_sections.each do |section|
24
- contents << section.to_s
25
- # add an empty line between sections (unless this is a comment section)
26
- unless section.is_comment?
27
- contents << ""
28
- end
29
- end
30
-
31
- @migrations << {
32
- name: generate_current_migration_name,
33
- content: contents.join("\n").strip
34
- }
35
-
36
- @current_migration_sections = []
37
- end
38
- end
39
-
40
- def to_a
41
- @migrations
42
- end
43
-
44
- private
45
-
46
- def current_migration_has_content_type? content_type
47
- @current_migration_sections.map(&:content_type).include? content_type
48
- end
49
-
50
- def current_migration_section_of_content_type content_type
51
- section = @current_migration_sections.find(&:content_type)
52
- if section.nil?
53
- raise SectionNotFoundError, "No section of type #{content_type} found"
54
- end
55
- section
56
- end
57
-
58
- # return true if the current migration only has the provided content types and comments
59
- def current_migration_only_content_types? content_types
60
- (@current_migration_sections.map(&:content_type) - content_types - [:comment]).empty?
61
- end
62
-
63
- def generate_current_migration_name
64
- if current_migration_has_content_type? :create_schema
65
- "create_#{current_migration_section_of_content_type(:create_schema).schema_name}_schema".to_sym
66
-
67
- elsif current_migration_has_content_type? :drop_schema
68
- "drop_#{current_migration_section_of_content_type(:drop_schema).schema_name}_schema".to_sym
69
-
70
- elsif current_migration_has_content_type? :create_table
71
- "create_#{current_migration_section_of_content_type(:create_table).table_name}".to_sym
72
-
73
- elsif current_migration_has_content_type? :drop_table
74
- "drop_#{current_migration_section_of_content_type(:drop_table).table_name}".to_sym
75
-
76
- elsif current_migration_only_content_types? [:create_function]
77
- "create_function_#{@current_migration_sections.find { |s| s.content_type == :create_function }&.object_name}".to_sym
78
-
79
- elsif current_migration_only_content_types? [:create_function, :update_function, :drop_function, :set_function_comment, :remove_function_comment]
80
- :schema_functions
81
-
82
- elsif @current_migration_sections.first&.table_name
83
- "changes_for_#{@current_migration_sections.first&.table_name}".to_sym
84
-
85
- else
86
- :changes
87
- end
88
- end
89
- end
90
- end
91
- end
92
- end