k_domain 0.0.5 → 0.0.16

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/.rubocop.yml +11 -1
  3. data/Gemfile +10 -0
  4. data/Rakefile +3 -1
  5. data/STORIES.md +15 -0
  6. data/k_domain.gemspec +2 -0
  7. data/lib/k_domain/domain_model/load.rb +8 -2
  8. data/lib/k_domain/domain_model/transform.rb +30 -3
  9. data/lib/k_domain/domain_model/transform_steps/_.rb +2 -0
  10. data/lib/k_domain/domain_model/transform_steps/step.rb +38 -0
  11. data/lib/k_domain/domain_model/transform_steps/step1_attach_db_schema.rb +1 -1
  12. data/lib/k_domain/domain_model/transform_steps/step4_attach_erd_files.rb +5 -2
  13. data/lib/k_domain/domain_model/transform_steps/step5_attach_dictionary.rb +5 -2
  14. data/lib/k_domain/domain_model/transform_steps/step8_rails_resource_models.rb +44 -0
  15. data/lib/k_domain/domain_model/transform_steps/step9_rails_structure_models.rb +33 -0
  16. data/lib/k_domain/rails_code_extractor/extract_model.rb +21 -0
  17. data/lib/k_domain/rails_code_extractor/load_shim.rb +32 -0
  18. data/lib/k_domain/raw_db_schema/load.rb +8 -2
  19. data/lib/k_domain/raw_db_schema/transform.rb +4 -5
  20. data/lib/k_domain/schemas/_.rb +15 -0
  21. data/lib/k_domain/{raw_db_schema/dtos → schemas/database}/_.rb +0 -7
  22. data/lib/k_domain/{raw_db_schema/dtos → schemas/database}/foreign_key.rb +1 -1
  23. data/lib/k_domain/{raw_db_schema/dtos → schemas/database}/index.rb +1 -1
  24. data/lib/k_domain/schemas/database/schema.rb +31 -0
  25. data/lib/k_domain/schemas/database/table.rb +32 -0
  26. data/lib/k_domain/schemas/dictionary.rb +19 -0
  27. data/lib/k_domain/{domain_model/dtos → schemas/domain}/_.rb +1 -24
  28. data/lib/k_domain/{domain_model/dtos → schemas/domain}/domain.rb +1 -1
  29. data/lib/k_domain/schemas/domain/erd_file.rb +82 -0
  30. data/lib/k_domain/{domain_model/dtos → schemas/domain}/models/column.rb +0 -0
  31. data/lib/k_domain/{domain_model/dtos → schemas/domain}/models/model.rb +0 -0
  32. data/lib/k_domain/{domain_model/dtos → schemas/domain/old}/belongs_to.rb +0 -0
  33. data/lib/k_domain/{domain_model/dtos → schemas/domain/old}/column_old.rb +0 -0
  34. data/lib/k_domain/{domain_model/dtos → schemas/domain/old}/domain_statistics.rb +0 -0
  35. data/lib/k_domain/{domain_model/dtos → schemas/domain/old}/entity.rb +0 -0
  36. data/lib/k_domain/{domain_model/dtos → schemas/domain/old}/entity_statistics.rb +0 -0
  37. data/lib/k_domain/{domain_model/dtos → schemas/domain/old}/foreign_key.rb +0 -0
  38. data/lib/k_domain/{domain_model/dtos → schemas/domain/old}/has_and_belongs_to_many.rb +0 -0
  39. data/lib/k_domain/{domain_model/dtos → schemas/domain/old}/has_many.rb +0 -0
  40. data/lib/k_domain/{domain_model/dtos → schemas/domain/old}/has_one.rb +0 -0
  41. data/lib/k_domain/{domain_model/dtos → schemas/domain/old}/name_options.rb +0 -0
  42. data/lib/k_domain/{domain_model/dtos → schemas/domain/old}/rails_controller.rb +0 -0
  43. data/lib/k_domain/{domain_model/dtos → schemas/domain/old}/rails_model.rb +0 -0
  44. data/lib/k_domain/{domain_model/dtos → schemas/domain/old}/related_entity.rb +0 -0
  45. data/lib/k_domain/{domain_model/dtos → schemas/domain/old}/statistics.rb +0 -0
  46. data/lib/k_domain/{domain_model/dtos → schemas/domain/old}/validate.rb +0 -0
  47. data/lib/k_domain/{domain_model/dtos → schemas/domain/old}/validates.rb +0 -0
  48. data/lib/k_domain/schemas/domain_model.rb +14 -0
  49. data/lib/k_domain/schemas/investigate.rb +15 -0
  50. data/lib/k_domain/schemas/rails_resource.rb +16 -0
  51. data/lib/k_domain/version.rb +1 -1
  52. data/lib/k_domain.rb +14 -2
  53. data/templates/active_record_shims.rb +355 -0
  54. data/templates/fake_module_shims.rb +42 -0
  55. data/{lib/k_domain/raw_db_schema/template.rb → templates/load_schema.rb} +4 -4
  56. metadata +54 -35
  57. data/lib/k_domain/domain_model/dtos/dictionary/dictionary.rb +0 -17
  58. data/lib/k_domain/domain_model/dtos/investigate/investigate.rb +0 -10
  59. data/lib/k_domain/domain_model/dtos/investigate/issue.rb +0 -13
  60. data/lib/k_domain/domain_model/dtos/schema.rb +0 -12
  61. data/lib/k_domain/raw_db_schema/dtos/column.rb +0 -16
  62. data/lib/k_domain/raw_db_schema/dtos/database.rb +0 -11
  63. data/lib/k_domain/raw_db_schema/dtos/schema.rb +0 -18
  64. data/lib/k_domain/raw_db_schema/dtos/table.rb +0 -21
  65. data/lib/k_domain/raw_db_schema/dtos/unique_key.rb +0 -14
@@ -11,7 +11,7 @@ class LoadSchema
11
11
  indexes: [],
12
12
  meta: {
13
13
  rails: @rails_version,
14
- database: {
14
+ db_info: {
15
15
  type: 'postgres',
16
16
  version: nil, # TODO
17
17
  extensions: []
@@ -50,14 +50,14 @@ class LoadSchema
50
50
  sort
51
51
  # code to time
52
52
 
53
- # log.kv 'extensions', schema[:database][:extensions].length
53
+ # log.kv 'extensions', schema[:db_info][:extensions].length
54
54
  # log.kv 'tables', schema[:tables].length
55
55
  # log.kv 'indexes', schema[:indexes].length
56
56
  # # a low foreign_keys count is indicative of not using SQL referential integrity
57
57
  # log.kv 'foreign_keys', schema[:foreign_keys].length
58
58
  # log.kv 'Time Taken', (finish - start)
59
59
 
60
- # puts schema[:database][:extensions]
60
+ # puts schema[:db_info][:extensions]
61
61
  # print_unique_keys(type: :foreign_keys, title: 'unique options for foreign_keys')
62
62
  # print_unique_keys(type: :columns, title: 'unique options for columns')
63
63
  # print_unique_keys(type: :fields, category: :integer , title: 'unique options for column - integer')
@@ -74,7 +74,7 @@ class LoadSchema
74
74
 
75
75
  def enable_extension(name)
76
76
  # puts "enable_extension(#{name})"
77
- schema[:meta][:database][:extensions] << name
77
+ schema[:meta][:db_info][:extensions] << name
78
78
  end
79
79
 
80
80
  def create_table(name, **opts)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: k_domain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-28 00:00:00.000000000 Z
11
+ date: 2021-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.0.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: peeky
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.0.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.0.0
55
69
  description: " K Domain builds complex domain schemas by combining the database
56
70
  schema with a rich entity relationship DSLs\n"
57
71
  email:
@@ -81,30 +95,6 @@ files:
81
95
  - hooks/update-version
82
96
  - k_domain.gemspec
83
97
  - lib/k_domain.rb
84
- - lib/k_domain/domain_model/dtos/_.rb
85
- - lib/k_domain/domain_model/dtos/belongs_to.rb
86
- - lib/k_domain/domain_model/dtos/column_old.rb
87
- - lib/k_domain/domain_model/dtos/dictionary/dictionary.rb
88
- - lib/k_domain/domain_model/dtos/domain.rb
89
- - lib/k_domain/domain_model/dtos/domain_statistics.rb
90
- - lib/k_domain/domain_model/dtos/entity.rb
91
- - lib/k_domain/domain_model/dtos/entity_statistics.rb
92
- - lib/k_domain/domain_model/dtos/foreign_key.rb
93
- - lib/k_domain/domain_model/dtos/has_and_belongs_to_many.rb
94
- - lib/k_domain/domain_model/dtos/has_many.rb
95
- - lib/k_domain/domain_model/dtos/has_one.rb
96
- - lib/k_domain/domain_model/dtos/investigate/investigate.rb
97
- - lib/k_domain/domain_model/dtos/investigate/issue.rb
98
- - lib/k_domain/domain_model/dtos/models/column.rb
99
- - lib/k_domain/domain_model/dtos/models/model.rb
100
- - lib/k_domain/domain_model/dtos/name_options.rb
101
- - lib/k_domain/domain_model/dtos/rails_controller.rb
102
- - lib/k_domain/domain_model/dtos/rails_model.rb
103
- - lib/k_domain/domain_model/dtos/related_entity.rb
104
- - lib/k_domain/domain_model/dtos/schema.rb
105
- - lib/k_domain/domain_model/dtos/statistics.rb
106
- - lib/k_domain/domain_model/dtos/validate.rb
107
- - lib/k_domain/domain_model/dtos/validates.rb
108
98
  - lib/k_domain/domain_model/load.rb
109
99
  - lib/k_domain/domain_model/transform.rb
110
100
  - lib/k_domain/domain_model/transform_steps/_.rb
@@ -114,18 +104,47 @@ files:
114
104
  - lib/k_domain/domain_model/transform_steps/step3_attach_columns.rb
115
105
  - lib/k_domain/domain_model/transform_steps/step4_attach_erd_files.rb
116
106
  - lib/k_domain/domain_model/transform_steps/step5_attach_dictionary.rb
117
- - lib/k_domain/raw_db_schema/dtos/_.rb
118
- - lib/k_domain/raw_db_schema/dtos/column.rb
119
- - lib/k_domain/raw_db_schema/dtos/database.rb
120
- - lib/k_domain/raw_db_schema/dtos/foreign_key.rb
121
- - lib/k_domain/raw_db_schema/dtos/index.rb
122
- - lib/k_domain/raw_db_schema/dtos/schema.rb
123
- - lib/k_domain/raw_db_schema/dtos/table.rb
124
- - lib/k_domain/raw_db_schema/dtos/unique_key.rb
107
+ - lib/k_domain/domain_model/transform_steps/step8_rails_resource_models.rb
108
+ - lib/k_domain/domain_model/transform_steps/step9_rails_structure_models.rb
109
+ - lib/k_domain/rails_code_extractor/extract_model.rb
110
+ - lib/k_domain/rails_code_extractor/load_shim.rb
125
111
  - lib/k_domain/raw_db_schema/load.rb
126
- - lib/k_domain/raw_db_schema/template.rb
127
112
  - lib/k_domain/raw_db_schema/transform.rb
113
+ - lib/k_domain/schemas/_.rb
114
+ - lib/k_domain/schemas/database/_.rb
115
+ - lib/k_domain/schemas/database/foreign_key.rb
116
+ - lib/k_domain/schemas/database/index.rb
117
+ - lib/k_domain/schemas/database/schema.rb
118
+ - lib/k_domain/schemas/database/table.rb
119
+ - lib/k_domain/schemas/dictionary.rb
120
+ - lib/k_domain/schemas/domain/_.rb
121
+ - lib/k_domain/schemas/domain/domain.rb
122
+ - lib/k_domain/schemas/domain/erd_file.rb
123
+ - lib/k_domain/schemas/domain/models/column.rb
124
+ - lib/k_domain/schemas/domain/models/model.rb
125
+ - lib/k_domain/schemas/domain/old/belongs_to.rb
126
+ - lib/k_domain/schemas/domain/old/column_old.rb
127
+ - lib/k_domain/schemas/domain/old/domain_statistics.rb
128
+ - lib/k_domain/schemas/domain/old/entity.rb
129
+ - lib/k_domain/schemas/domain/old/entity_statistics.rb
130
+ - lib/k_domain/schemas/domain/old/foreign_key.rb
131
+ - lib/k_domain/schemas/domain/old/has_and_belongs_to_many.rb
132
+ - lib/k_domain/schemas/domain/old/has_many.rb
133
+ - lib/k_domain/schemas/domain/old/has_one.rb
134
+ - lib/k_domain/schemas/domain/old/name_options.rb
135
+ - lib/k_domain/schemas/domain/old/rails_controller.rb
136
+ - lib/k_domain/schemas/domain/old/rails_model.rb
137
+ - lib/k_domain/schemas/domain/old/related_entity.rb
138
+ - lib/k_domain/schemas/domain/old/statistics.rb
139
+ - lib/k_domain/schemas/domain/old/validate.rb
140
+ - lib/k_domain/schemas/domain/old/validates.rb
141
+ - lib/k_domain/schemas/domain_model.rb
142
+ - lib/k_domain/schemas/investigate.rb
143
+ - lib/k_domain/schemas/rails_resource.rb
128
144
  - lib/k_domain/version.rb
145
+ - templates/active_record_shims.rb
146
+ - templates/fake_module_shims.rb
147
+ - templates/load_schema.rb
129
148
  homepage: http://appydave.com/gems/k-domain
130
149
  licenses:
131
150
  - MIT
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Domain class holds a dictionary entry
4
- module KDomain
5
- module DomainModel
6
- class Dictionary < Dry::Struct
7
- attribute :name , Types::Strict::String
8
- attribute :type , Types::Strict::String
9
- attribute :label , Types::Strict::String
10
- attribute :segment , Types::Strict::String
11
- attribute :models , Types::Strict::Array
12
- attribute :model_count , Types::Strict::Integer
13
- attribute :types , Types::Strict::Array
14
- attribute :type_count , Types::Strict::Integer
15
- end
16
- end
17
- end
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Domain class holds a dictionary entry
4
- module KDomain
5
- module DomainModel
6
- class Investigate < Dry::Struct
7
- attribute :issues , Types::Strict::Array.of(KDomain::DomainModel::Issue)
8
- end
9
- end
10
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Domain class holds an investigation entry
4
- module KDomain
5
- module DomainModel
6
- class Issue < Dry::Struct
7
- attribute :step , Types::Strict::String
8
- attribute :location , Types::Strict::String
9
- attribute :key , Types::Strict::String.optional.default(nil)
10
- attribute :message , Types::Strict::String
11
- end
12
- end
13
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # DomainModel holds the entire domain model including database and ancillary information
4
- module KDomain
5
- module DomainModel
6
- class Schema < Dry::Struct
7
- attribute :domain , KDomain::DomainModel::Domain
8
- attribute :database , KDomain::RawDbSchema::Schema
9
- attribute :investigate , KDomain::DomainModel::Investigate
10
- end
11
- end
12
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module KDomain
4
- module RawDbSchema
5
- class Column < Dry::Struct
6
- attribute :name , Types::Strict::String
7
- attribute :type , Types::Strict::String
8
- attribute :precision? , Types::Strict::Integer.optional.default(nil)
9
- attribute :scale? , Types::Strict::Integer.optional.default(nil)
10
- attribute :default? , Types::Nominal::Any.optional.default(nil) # Types::Strict::Bool.optional.default(nil) | Types::Strict::Integer.optional.default(nil)
11
- attribute :array? , Types::Strict::Bool.optional.default(nil)
12
- attribute :null? , Types::Strict::Bool.optional.default(nil)
13
- attribute :limit? , Types::Strict::Integer.optional.default(nil)
14
- end
15
- end
16
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module KDomain
4
- module RawDbSchema
5
- class Database < Dry::Struct
6
- attribute :type , Types::Strict::String
7
- attribute :version , Types::Nominal::Any.optional.default(nil)
8
- attribute :extensions , Types::Strict::Array
9
- end
10
- end
11
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module KDomain
4
- module RawDbSchema
5
- class Schema < Dry::Struct
6
- class Meta < Dry::Struct
7
- attribute :rails , Types::Strict::Integer
8
- attribute :database , KDomain::RawDbSchema::Database
9
- attribute :unique_keys , Types::Strict::Array.of(KDomain::RawDbSchema::UniqueKey)
10
- end
11
-
12
- attribute :tables , Types::Strict::Array.of(KDomain::RawDbSchema::Table)
13
- attribute :foreign_keys? , Types::Strict::Array.of(KDomain::RawDbSchema::ForeignKey)
14
- attribute :indexes? , Types::Strict::Array.of(KDomain::RawDbSchema::Index)
15
- attribute :meta , KDomain::RawDbSchema::Schema::Meta
16
- end
17
- end
18
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module KDomain
4
- module RawDbSchema
5
- class Table < Dry::Struct
6
- class Meta < Dry::Struct
7
- attribute :primary_key , Types::Nominal::Any.optional.default(nil)
8
- attribute :id , Types::Nominal::Any.optional.default(nil)
9
- attribute :force , Types::Nominal::Any.optional.default(nil)
10
- end
11
-
12
- attribute :name , Types::Strict::String
13
- attribute :primary_key , Types::Strict::String.optional.default(nil)
14
- attribute :primary_key_type , Types::Strict::String.optional.default(nil)
15
- attribute :id? , Types::Nominal::Any.optional.default(nil) # Types::Strict::String.optional.default(nil)
16
- attribute :columns , Types::Strict::Array.of(KDomain::RawDbSchema::Column)
17
- attribute :indexes , Types::Strict::Array.of(KDomain::RawDbSchema::Index)
18
- attribute :rails_schema , KDomain::RawDbSchema::Table::Meta
19
- end
20
- end
21
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module KDomain
4
- module RawDbSchema
5
- # Keep a track of unique keys that appear in the data structures
6
- # so that we can track what new attributes to add to the models
7
- class UniqueKey < Dry::Struct
8
- attribute :type , Types::Strict::String
9
- attribute :category , Types::Strict::String.optional
10
- attribute :key , Types::Strict::String
11
- attribute :keys , Types::Strict::Array
12
- end
13
- end
14
- end