k_domain 0.0.26 → 0.0.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 86f877b2fd5644c7ebd211c662cb4cd1ff63213dcc3cc588d3485f698a2bc7b9
4
- data.tar.gz: 9999ee5fa153fa7c1833cd21a0a5a145cbee4a97cd11284c1bb4440157ae6d0a
3
+ metadata.gz: e4d9da64cb89b7d2ee8ddd67e025ebcb34d617f0631b243368204c2cf904ec7b
4
+ data.tar.gz: 8168edbaf51175596d36d36a031e5f3a97ffc7c3bb13c1586fb8a6cf52646673
5
5
  SHA512:
6
- metadata.gz: 013e1f7524e395b9766831786cd1f4052eb6000fd35105c58bfb51869f9d1b93151f3fbc3e8fe349f59dd6819daf7d27e22a05ae5f95fba6826bf61af06eb235
7
- data.tar.gz: c56d291ba618e70863e334bca9c1e817da700d6d0769e92ac5fb7d267b1f02068f6d4275e423264147066389d45dca831d3b3878eef45662d0f4ef8457d99e20
6
+ metadata.gz: cd639a6ee4f496b05a6b0772b6782daa25866ad5f97321813c58e09c0b98a6f214c7cb88444e5d1e48d46f0566e352c6f48a44693d7ba742117bc8661df982a7
7
+ data.tar.gz: e733532923f3ae06191d6a037e11a9cf5e8dcb5939b08c9fe5f128e82fc75d6636e2727961b726e5761fd26db304fe5c6cef4082175d8539cbd4835828456a2d
@@ -25,7 +25,9 @@ jobs:
25
25
  run: |
26
26
  gem install bundler -v 2.2.5
27
27
  bundle install
28
- - name: Run tests
29
- run: bundle exec rspec
30
28
  - name: Run rubocop
31
- run: bundle exec rubocop
29
+ run: |
30
+ bundle exec rubocop -v
31
+ bundle exec rubocop
32
+ - name: Run tests
33
+ run: bundle exec rspec --tag ~skip_on_gha
data/.gitignore CHANGED
@@ -31,6 +31,7 @@ k_domain.yml
31
31
  *.o
32
32
  *.a
33
33
  mkmf.log
34
+ .vscode
34
35
 
35
36
  # Ruby Version
36
37
  .ruby-version
data/.rubocop.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # require: rubocop-rake
2
2
  AllCops:
3
- TargetRubyVersion: 2.5
3
+ TargetRubyVersion: 2.7
4
4
  DisplayCopNames: true
5
5
  ExtraDetails: true
6
6
  NewCops: enable
@@ -10,6 +10,7 @@ AllCops:
10
10
  - "templates/**/*"
11
11
  - "lib/k_domain/schemas/domain/old/**/*"
12
12
  - "spec/k_domain/ruby_loader/**/*"
13
+ - "hooks/**/*"
13
14
 
14
15
  Metrics/PerceivedComplexity:
15
16
  Exclude:
@@ -68,8 +69,6 @@ Metrics/MethodLength:
68
69
 
69
70
  Layout/LineLength:
70
71
  Max: 200
71
- # Ignores annotate output
72
- IgnoredPatterns: ['\A# \*\*']
73
72
  IgnoreCopDirectives: true
74
73
  Exclude:
75
74
  - "lib/k_domain/domain_model/transform_steps/*.rb"
@@ -116,6 +115,12 @@ Style/FormatStringToken:
116
115
  Style/Documentation:
117
116
  Enabled: false
118
117
 
118
+ Style/OpenStructUse:
119
+ Enabled: false
120
+
119
121
  Layout/SpaceBeforeComma:
120
122
  Enabled: false
123
+
124
+ Gemspec/RequireMFA:
125
+ Enabled: false
121
126
  # My Preferences - End
data/Gemfile CHANGED
@@ -16,7 +16,7 @@ group :development, :test do
16
16
  gem 'guard-bundler'
17
17
  gem 'guard-rspec'
18
18
  gem 'guard-rubocop'
19
- gem 'rake', '~> 12.0'
19
+ gem 'rake'
20
20
  gem 'rake-compiler', require: false
21
21
  gem 'rspec', '~> 3.0'
22
22
  gem 'rubocop'
@@ -25,7 +25,7 @@ group :development, :test do
25
25
  end
26
26
 
27
27
  # If local dependency
28
- if ENV['KLUE_LOCAL_GEMS']&.to_s&.downcase == 'true'
28
+ if ENV.fetch('KLUE_LOCAL_GEMS', 'false').downcase == 'true'
29
29
  group :development, :test do
30
30
  puts 'Using Local GEMs'
31
31
  gem 'k_log' , path: '../k_log'
data/k_domain.gemspec CHANGED
@@ -3,7 +3,7 @@
3
3
  require_relative 'lib/k_domain/version'
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.required_ruby_version = '>= 2.5'
6
+ spec.required_ruby_version = '>= 2.7'
7
7
  spec.name = 'k_domain'
8
8
  spec.version = KDomain::VERSION
9
9
  spec.authors = ['David Cruwys']
@@ -39,8 +39,8 @@ Gem::Specification.new do |spec|
39
39
  spec.require_paths = ['lib']
40
40
  # spec.extensions = ['ext/k_domain/extconf.rb']
41
41
 
42
- spec.add_dependency 'activesupport' , '~> 6'
42
+ spec.add_dependency 'activesupport', '~> 7'
43
43
  spec.add_dependency 'dry-struct', '~> 1'
44
- spec.add_dependency 'k_log' , '~> 0.0.0'
45
- spec.add_dependency 'peeky' , '~> 0.0.0'
44
+ spec.add_dependency 'k_log' , '~> 0'
45
+ spec.add_dependency 'peeky' , '~> 0'
46
46
  end
@@ -0,0 +1,85 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Loads the db schema object and works through a series of enrichment steps to
4
+ # that builds the domain modal
5
+
6
+ module KDomain
7
+ module DomainModel
8
+ class BuildRichModels
9
+ include KLog::Logging
10
+
11
+ attr_reader :db_schema
12
+ attr_reader :target_folder
13
+ attr_reader :query
14
+
15
+ def initialize(domain_model:, target_folder:)
16
+ @domain_model = domain_model
17
+ @target_folder = target_folder
18
+ @query = KDomain::Queries::DomainModelQuery.new(domain_model)
19
+ end
20
+
21
+ def call
22
+ FileUtils.mkdir_p(target_folder)
23
+
24
+ export_domain_models(query.all) # .take(3))
25
+ end
26
+
27
+ def export_domain_models(models)
28
+ puts 'export domain models'
29
+ models.each do |model|
30
+ # write a single dot to the console in the color red
31
+ print "\e[31m.\e[0m"
32
+
33
+ json = JSON.pretty_generate(build_rich_model(model))
34
+ target_file = File.join(target_folder, "#{model.name}.json")
35
+ File.write(target_file, json)
36
+ end
37
+ end
38
+
39
+ # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
40
+ def build_rich_model(model)
41
+ {
42
+ name: model.name,
43
+ name_plural: model.name_plural,
44
+ table_name: model.table_name,
45
+ type: model.type,
46
+ pk: model.pk.to_h,
47
+ file: model.file,
48
+ exist: model.ruby?,
49
+ create_update_timestamp: model.create_update_timestamp?,
50
+ main_key: model.main_key,
51
+ traits: model.traits,
52
+ column_names: {
53
+ all: model.columns.map(&:name),
54
+ data: model.columns_data.map(&:name),
55
+ primary: model.columns_primary.map(&:name),
56
+ foreign_key: model.columns_foreign_key.map(&:name),
57
+ foreign_type: model.columns_foreign_type.map(&:name),
58
+ timestamp: model.columns_timestamp.map(&:name),
59
+ deleted_at: model.columns_deleted_at.map(&:name),
60
+ virtual: model.columns_virtual.map(&:name),
61
+ data_foreign: model.columns_data_foreign.map(&:name),
62
+ data_primary: model.columns_data_primary.map(&:name),
63
+ data_virtual: model.columns_data_virtual.map(&:name),
64
+ data_foreign_virtual: model.columns_data_foreign_virtual.map(&:name)
65
+ },
66
+ columns: {
67
+ all: model.columns.map(&:to_h),
68
+ data: model.columns_data.map(&:to_h),
69
+ primary: model.columns_primary.map(&:to_h),
70
+ foreign_key: model.columns_foreign_key.map(&:to_h),
71
+ foreign_type: model.columns_foreign_type.map(&:to_h),
72
+ timestamp: model.columns_timestamp.map(&:to_h),
73
+ deleted_at: model.columns_deleted_at.map(&:to_h),
74
+ virtual: model.columns_virtual.map(&:to_h),
75
+ data_foreign: model.columns_data_foreign.map(&:to_h),
76
+ data_primary: model.columns_data_primary.map(&:to_h),
77
+ data_virtual: model.columns_data_virtual.map(&:to_h),
78
+ data_foreign_virtual: model.columns_data_foreign_virtual.map(&:to_h)
79
+ }
80
+ }
81
+ end
82
+ # rubocop:enable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
83
+ end
84
+ end
85
+ end
@@ -22,8 +22,10 @@ module KDomain
22
22
  json = File.read(source_file)
23
23
  @raw_data = KUtil.data.json_parse(json, as: :hash_symbolized)
24
24
 
25
- @data = KDomain::Schemas::DomainModel.new(@raw_data)
25
+ # This line is slow on big datasets
26
+ @data = KDomain::Schemas::MainDataset.new(@raw_data)
26
27
 
28
+ # This line is also slow on big datasets
27
29
  enrichment
28
30
  end
29
31
 
@@ -14,17 +14,19 @@ module KDomain
14
14
  attr_reader :model_path
15
15
  attr_reader :controller_path
16
16
  attr_reader :route_path
17
- attr_reader :shim_loader
17
+ attr_reader :model_shim_loader
18
+ attr_reader :controller_shim_loader
18
19
 
19
20
  # rubocop:disable Metrics/ParameterLists
20
- def initialize(db_schema: , target_file: , target_step_file: , model_path:, route_path:, controller_path:, shim_loader: nil)
21
- @db_schema = db_schema
22
- @target_step_file = target_step_file
23
- @target_file = target_file
24
- @model_path = model_path
25
- @controller_path = controller_path
26
- @route_path = route_path
27
- @shim_loader = shim_loader
21
+ def initialize(db_schema: , target_file: , target_step_file: , model_path:, route_path:, controller_path:, model_shim_loader: nil, controller_shim_loader: nil)
22
+ @db_schema = db_schema
23
+ @target_step_file = target_step_file
24
+ @target_file = target_file
25
+ @model_path = model_path
26
+ @controller_path = controller_path
27
+ @route_path = route_path
28
+ @model_shim_loader = model_shim_loader
29
+ @controller_shim_loader = controller_shim_loader
28
30
  end
29
31
  # rubocop:enable Metrics/ParameterLists
30
32
 
@@ -35,8 +37,8 @@ module KDomain
35
37
  valid &&= Step2DomainModels.run(domain_data, model_path: model_path, step_file: step_file('02-domain-model'))
36
38
  valid &&= Step4RailsResourceModels.run(domain_data, model_path: model_path, step_file: step_file('04-rails-resource-models'))
37
39
  valid &&= Step5RailsResourceRoutes.run(domain_data, route_path: route_path, controller_path: controller_path, step_file: step_file('05-rails-resource-routes'))
38
- valid &&= Step6RailsStructureModels.run(domain_data, model_path: model_path, step_file: step_file('06-rails-structure-models'), shim_loader: shim_loader)
39
- valid &&= Step7RailsStructureControllers.run(domain_data, controller_path: controller_path, step_file: step_file('07-rails-structure-controllers'), shim_loader: shim_loader)
40
+ valid &&= Step6RailsStructureModels.run(domain_data, model_path: model_path, step_file: step_file('06-rails-structure-models'), shim_loader: model_shim_loader)
41
+ valid &&= Step7RailsStructureControllers.run(domain_data, controller_path: controller_path, step_file: step_file('07-rails-structure-controllers'), shim_loader: controller_shim_loader)
40
42
  valid &&= Step8DomainColumns.run(domain_data, step_file: step_file('08-domain-columns'))
41
43
  valid &&= Step20Dictionary.run(domain_data, step_file: step_file('20-dictionary'))
42
44
 
@@ -37,6 +37,7 @@ class Step6RailsStructureModels < KDomain::DomainModel::Step
37
37
 
38
38
  def attach_behavior_and_functions
39
39
  rails_structure_models.select { |model| model[:exist] }.each do |model|
40
+ # puts "model: #{model[:model_name]}"
40
41
  model[:behaviours] = extract_behavior(model[:file])
41
42
  klass_name = model[:behaviours][:class_name]
42
43
  model[:functions] = extract_functions(klass_name)
@@ -58,7 +58,10 @@ class Step7RailsStructureControllers < KDomain::DomainModel::Step
58
58
  end
59
59
 
60
60
  def attach_behavior_and_functions
61
+ rails_structure_controllers.sort_by! { |controller| controller[:full_file] }
62
+
61
63
  rails_structure_controllers.select { |controller| controller[:exist] }.each do |controller|
64
+ # puts "controller: #{controller[:full_file]}"
62
65
  unless File.exist?(controller[:full_file])
63
66
  log.error 'Controller apparently exists but no file found, this means that you need re-run rake routes'
64
67
  puts controller[:full_file]
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative './base_query'
4
+ require_relative './domain_model_query'
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KDomain
4
+ module Queries
5
+ class BaseQuery
6
+ attr_reader :domain_model
7
+
8
+ def initialize(domain_model)
9
+ @domain_model = domain_model
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,88 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KDomain
4
+ module Queries
5
+ # Query models found on the domain model
6
+ # by
7
+ # has ruby file
8
+ # has primary key
9
+ # column count
10
+ # data column count
11
+ # foreign key column count
12
+ # has timestamp (created_at, updated_at) columns
13
+ # has created_at
14
+ # has updated_at
15
+ # has deleted_at
16
+ # has polymorphic foreign keys
17
+ # has virtual columns
18
+ # virtual column filters (token, encrypted_password, etc)
19
+ class DomainModelQuery < BaseQuery
20
+ def all
21
+ domain_model.domain.models
22
+ end
23
+
24
+ def query(**filters)
25
+ @query = all.clone
26
+
27
+ filters.each do |key, value|
28
+ send("filter_#{key}", value)
29
+ end
30
+
31
+ @query
32
+ end
33
+
34
+ private
35
+
36
+ def filter_ruby(value)
37
+ @query.select! { |model| model.ruby? == value }
38
+ end
39
+
40
+ def filter_pk(value)
41
+ @query.select! { |model| model.pk.exist? == value }
42
+ end
43
+
44
+ def filter_column_count(block)
45
+ @query.select! { |model| block.call(model.columns.count) }
46
+ end
47
+
48
+ def filter_data_column_count(block)
49
+ @query.select! { |model| block.call(model.columns_data.count) }
50
+ end
51
+
52
+ def filter_foreign_key_column_count(block)
53
+ @query.select! { |model| block.call(model.columns_foreign_key.count) }
54
+ end
55
+ alias filter_fk_column_count filter_foreign_key_column_count
56
+ alias filter_fk_count filter_foreign_key_column_count
57
+
58
+ def filter_polymorphic_foreign_key_column_count(block)
59
+ @query.select! { |model| block.call(model.columns_foreign_type.count) }
60
+ end
61
+ alias filter_poly_fk_column_count filter_polymorphic_foreign_key_column_count
62
+ alias filter_poly_fk_count filter_polymorphic_foreign_key_column_count
63
+
64
+ def filter_timestamp(value)
65
+ @query.select! { |model| (model.columns_timestamp.count == 2) == value }
66
+ end
67
+
68
+ def filter_created_at(value)
69
+ @query.select! { |model| (model.columns.any? { |column| column.name == 'created_at' } == value) }
70
+ end
71
+
72
+ def filter_updated_at(value)
73
+ @query.select! { |model| (model.columns.any? { |column| column.name == 'updated_at' } == value) }
74
+ end
75
+
76
+ def filter_deleted_at(value)
77
+ @query.select! { |model| (model.columns.any? { |column| column.name == 'deleted_at' } == value) }
78
+ end
79
+ # has virtual columns
80
+ # virtual column filters (token, encrypted_password, etc)
81
+
82
+ # # HELP: this filter affects table rows, eg. if a table has less the 2 columns then include the table
83
+ # low_column: -> (model) { model.columns.length < 5 },
84
+ # suspected_m2m: -> (model) { model.columns_foreign.length == 2 && model.columns_data.length < 3 },
85
+ # invalid_types: -> (model) { model.columns.any? { |c| [c.db_type, c.csharp_type, c.ruby_type].include?('******') } },
86
+ end
87
+ end
88
+ end
@@ -18,8 +18,10 @@ module KDomain
18
18
  end
19
19
 
20
20
  def call
21
- # puts shim_files.map { |sf| sf[:file] }
22
- shim_files.select { |sf| sf[:exist] }.each { |sf| require sf[:file] }
21
+ shim_files.select { |sf| sf[:exist] }.each do |sf|
22
+ require sf[:file]
23
+ end
24
+ nil
23
25
  end
24
26
 
25
27
  def register(name, file)
@@ -13,6 +13,6 @@ require_relative 'database'
13
13
  require_relative 'dictionary'
14
14
  require_relative 'domain_types'
15
15
  require_relative 'domain'
16
- require_relative 'domain_model'
16
+ require_relative 'main_dataset'
17
17
 
18
18
  # require_relative './domain_model'
@@ -47,12 +47,53 @@ module KDomain
47
47
 
48
48
  @csharp_type = KDomain::Schemas::CSHARP_TYPE[type] || '******'
49
49
  end
50
+
51
+ # rubocop:disable Metrics/AbcSize
52
+ def to_h
53
+ {
54
+ name: name,
55
+ name_plural: name_plural,
56
+ type: type,
57
+ precision: precision,
58
+ scale: scale,
59
+ default: default,
60
+ default_as_code: value_as_code(default),
61
+ null: null,
62
+ null_as_code: value_as_code(null), # handlebars does not like null property name
63
+ limit: limit,
64
+ array: array,
65
+ array_as_code: value_as_code(array),
66
+ db_type: db_type,
67
+ ruby_type: ruby_type,
68
+ csharp_type: csharp_type,
69
+ structure_type: structure_type,
70
+ relationships: relationships
71
+ }
72
+ end
73
+ # rubocop:enable Metrics/AbcSize
74
+
75
+ private
76
+
77
+ def value_as_code(value)
78
+ return value if value.nil?
79
+
80
+ case value
81
+ when String # , Hash
82
+ "'#{value}'"
83
+ else
84
+ value.to_s
85
+ end
86
+ end
50
87
  end
51
88
 
52
89
  class Pk < Dry::Struct
53
90
  attribute :name , Types::Strict::String.optional.default(nil)
54
91
  attribute :type , Types::Strict::String.optional.default(nil)
55
92
  attribute :exist , Types::Strict::Bool
93
+
94
+ def exist?
95
+ exist
96
+ end
56
97
  end
57
98
 
58
99
  attribute :name , Types::Strict::String
@@ -75,6 +116,12 @@ module KDomain
75
116
  pk.exist
76
117
  end
77
118
 
119
+ def create_update_timestamp?
120
+ names = columns_timestamp.map(&:name)
121
+
122
+ (names & %w[created_at updated_at]).any?
123
+ end
124
+
78
125
  # Custom model configurations such as main_key and traits
79
126
  def config
80
127
  @config ||= KDomain.configuration.find_model(name.to_sym)
@@ -97,10 +144,11 @@ module KDomain
97
144
  @columns_primary ||= columns_for_structure_types(:primary_key)
98
145
  end
99
146
 
100
- def columns_foreign
147
+ def columns_foreign_key
101
148
  @columns_foreign ||= columns_for_structure_types(:foreign_key)
102
149
  end
103
150
 
151
+ # polymorphic foreign keys
104
152
  def columns_foreign_type
105
153
  @columns_foreign_type ||= columns_for_structure_types(:foreign_type)
106
154
  end
@@ -118,7 +166,7 @@ module KDomain
118
166
  end
119
167
 
120
168
  def columns_data_foreign
121
- @columns_data_foreign ||= columns_for_structure_types(:data, :foreign_key)
169
+ @columns_data_foreign ||= columns_for_structure_types(:data, :foreign_key, :foreign_type)
122
170
  end
123
171
  alias rows_fields_and_fk columns_data_foreign
124
172
 
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # DomainModel holds the entire domain model including database and ancillary information
3
+ # MainDataset holds the entire domain model including database and ancillary information
4
4
  module KDomain
5
5
  module Schemas
6
- class DomainModel < Dry::Struct
6
+ class MainDataset < Dry::Struct
7
7
  attribute :domain , KDomain::Schemas::Domain
8
8
  attribute :database , KDomain::Schemas::Database
9
9
  attribute :dictionary , KDomain::Schemas::Dictionary
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module KDomain
4
- VERSION = '0.0.26'
4
+ VERSION = '0.0.29'
5
5
  end
data/lib/k_domain.rb CHANGED
@@ -12,7 +12,9 @@ require 'k_domain/raw_db_schema/load'
12
12
  require 'k_domain/domain_model/transform'
13
13
  require 'k_domain/domain_model/transform_steps/_'
14
14
  require 'k_domain/domain_model/load'
15
+ require 'k_domain/domain_model/build_rich_models'
15
16
  require 'k_domain/rails_code_extractor/_'
17
+ require 'k_domain/queries/_'
16
18
 
17
19
  # # This is useful if you want to initialize structures via Hash
18
20
  # class SymbolizeStruct < Dry::Struct
@@ -38,7 +40,7 @@ module KDomain
38
40
  # Your code goes here...
39
41
  end
40
42
 
41
- if ENV['KLUE_DEBUG']&.to_s&.downcase == 'true'
43
+ if ENV.fetch('KLUE_DEBUG', 'false').downcase == 'true'
42
44
  namespace = 'KDomain::Version'
43
45
  file_path = $LOADED_FEATURES.find { |f| f.include?('k_domain/version') }
44
46
  version = KDomain::VERSION.ljust(9)
@@ -3,34 +3,5 @@ module ActionController
3
3
  def self.require(require)
4
4
  add(:require, require)
5
5
  end
6
- # def self.rescue_from(type)#, &block)
7
- # # block_source = nil
8
- # # block_source = lambda_source(block, 'default_scope') if block_given?
9
-
10
- # add(:rescue_from, {
11
- # type: type#,
12
- # # block: block_source
13
- # })
14
- # end
15
- # def self.helper_method(*names)
16
- # add(:helper_method, {
17
- # names: names
18
- # })
19
- # end
20
- # def self.helper(name)
21
- # add(:helper, {
22
- # name: name
23
- # })
24
- # end
25
- # def self.http_basic_authenticate_with(**opts)
26
- # add(:http_basic_authenticate_with, {
27
- # opts: opts
28
- # })
29
- # end
30
- # def self.protect_from_forgery(**opts)
31
- # add(:protect_from_forgery, {
32
- # opts: opts
33
- # })
34
- # end
35
6
  end
36
7
  end
@@ -10,18 +10,14 @@ class Rails
10
10
  )
11
11
  end
12
12
  end
13
- class RegionConfig
14
- def self.require_value(*_p, **_o, &block); end
15
- end
16
-
17
13
  class ApplicationController < ActionController::Base
14
+ def self.require(*_p, **_o); end
18
15
  end
19
16
 
20
17
  module Admin
21
18
  class BaseController < ActionController::Base
22
19
  end
23
20
  end
24
-
25
21
  module Api
26
22
  module V1
27
23
  class BaseController < ActionController::Base
@@ -38,12 +34,18 @@ module Portal
38
34
  class BaseController < ApplicationController
39
35
  end
40
36
  end
41
-
42
37
  module ActiveRecord
43
38
  class RecordNotFound
44
39
  end
45
40
  end
46
-
41
+ class RegionConfig < ActiveRecord::Base
42
+ def self.require_value(*_p, **_o, &block)
43
+ return 'ABC'
44
+ end
45
+ def self.get_value
46
+ return 'ABC'
47
+ end
48
+ end
47
49
  module Aws
48
50
  class Credentials
49
51
  def initialize(*_p, **_o, &block); end
@@ -11,11 +11,32 @@ module ActsAsCommentable
11
11
  end
12
12
  end
13
13
 
14
+
14
15
  module Scopes
15
16
  module CompanyScopes
16
17
  end
17
18
  end
18
19
 
20
+ module DeIdentifiable
21
+ def deidentifiable(*_p, **_o); end
22
+ end
23
+
24
+ class Company < ActiveRecord::Base
25
+ extend DeIdentifiable
26
+ end
27
+ class Estimate < ActiveRecord::Base
28
+ extend DeIdentifiable
29
+ end
30
+ class Invoice < ActiveRecord::Base
31
+ extend DeIdentifiable
32
+ end
33
+ class Address < ActiveRecord::Base
34
+ extend DeIdentifiable
35
+ end
36
+ class Contact < ActiveRecord::Base
37
+ extend DeIdentifiable
38
+ end
39
+
19
40
  class Thread
20
41
  def initialize(*_p, **_o, &block); end
21
42
  end
@@ -41,17 +62,41 @@ module ApiLoggable; end
41
62
  module Excludable; end
42
63
  module Bookmarkable; end
43
64
  module Categorizable; end
44
- module PgSearch; end
65
+ module PgSearch
66
+ module Model
67
+ end
68
+ end
45
69
  module Excludable; end
46
- module JsonbStore; end
70
+ module JsonbStore
71
+ def self.included(klass)
72
+ klass.extend(ClassMethods)
73
+ end
47
74
 
75
+ module ClassMethods
76
+ def jsonb_store(*_p, **_o); end
77
+ end
78
+ end
48
79
  module ActionView
49
80
  module Helpers
50
81
  module NumberHelper
51
82
  end
52
83
  end
53
84
  end
54
-
85
+ module PrintSpeak
86
+ class Application
87
+ def self.google_oath_secret_key
88
+ 'ABC'
89
+ end
90
+ end
91
+ end
92
+ class RegionConfig < ActiveRecord::Base
93
+ def self.require_value(*_p, **_o, &block)
94
+ 'ABC'
95
+ end
96
+ def self.get_value
97
+ return 'ABC'
98
+ end
99
+ end
55
100
  module RailsUpgrade
56
101
  def rails4?
57
102
  true
@@ -4,6 +4,8 @@ module ActiveRecord
4
4
  class Base
5
5
  extend RubyCodeExtractor::BehaviourAccessors
6
6
 
7
+ def self.require(*_p, **_o); end
8
+
7
9
  def self.singleton_class
8
10
  Class.new do
9
11
  def send(*_p, **_o); end
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.26
4
+ version: 0.0.29
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-08 00:00:00.000000000 Z
11
+ date: 2022-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '6'
19
+ version: '7'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '6'
26
+ version: '7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: dry-struct
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,28 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.0.0
47
+ version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.0.0
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: peeky
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.0.0
61
+ version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.0.0
68
+ version: '0'
69
69
  description: " K Domain builds complex domain schemas by combining the database
70
70
  schema with a rich entity relationship DSLs\n"
71
71
  email:
@@ -101,6 +101,7 @@ files:
101
101
  - lib/k_domain/config/_.rb
102
102
  - lib/k_domain/config/config.rb
103
103
  - lib/k_domain/config/configuration.rb
104
+ - lib/k_domain/domain_model/build_rich_models.rb
104
105
  - lib/k_domain/domain_model/load.rb
105
106
  - lib/k_domain/domain_model/transform.rb
106
107
  - lib/k_domain/domain_model/transform_steps/_.rb
@@ -113,6 +114,9 @@ files:
113
114
  - lib/k_domain/domain_model/transform_steps/step6_rails_structure_models.rb
114
115
  - lib/k_domain/domain_model/transform_steps/step7_rails_structure_controllers.rb
115
116
  - lib/k_domain/domain_model/transform_steps/step8_domain_columns.rb
117
+ - lib/k_domain/queries/_.rb
118
+ - lib/k_domain/queries/base_query.rb
119
+ - lib/k_domain/queries/domain_model_query.rb
116
120
  - lib/k_domain/rails_code_extractor/_.rb
117
121
  - lib/k_domain/rails_code_extractor/extract_controller.rb
118
122
  - lib/k_domain/rails_code_extractor/extract_model.rb
@@ -140,9 +144,9 @@ files:
140
144
  - lib/k_domain/schemas/domain/old/statistics.rb
141
145
  - lib/k_domain/schemas/domain/old/validate.rb
142
146
  - lib/k_domain/schemas/domain/old/validates.rb
143
- - lib/k_domain/schemas/domain_model.rb
144
147
  - lib/k_domain/schemas/domain_types.rb
145
148
  - lib/k_domain/schemas/investigate.rb
149
+ - lib/k_domain/schemas/main_dataset.rb
146
150
  - lib/k_domain/schemas/rails_resource.rb
147
151
  - lib/k_domain/schemas/rails_structure.rb
148
152
  - lib/k_domain/version.rb
@@ -171,14 +175,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
171
175
  requirements:
172
176
  - - ">="
173
177
  - !ruby/object:Gem::Version
174
- version: '2.5'
178
+ version: '2.7'
175
179
  required_rubygems_version: !ruby/object:Gem::Requirement
176
180
  requirements:
177
181
  - - ">="
178
182
  - !ruby/object:Gem::Version
179
183
  version: '0'
180
184
  requirements: []
181
- rubygems_version: 3.2.33
185
+ rubygems_version: 3.1.6
182
186
  signing_key:
183
187
  specification_version: 4
184
188
  summary: K Domain builds complex domain schemas by combining the database schema with