activerecord-dbt 0.1.0

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.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +921 -0
  4. data/Rakefile +5 -0
  5. data/lib/active_record/dbt/column/column.rb +84 -0
  6. data/lib/active_record/dbt/column/test.rb +61 -0
  7. data/lib/active_record/dbt/column/testable/accepted_values_testable.rb +59 -0
  8. data/lib/active_record/dbt/column/testable/not_null_testable.rb +23 -0
  9. data/lib/active_record/dbt/column/testable/relationships_testable.rb +49 -0
  10. data/lib/active_record/dbt/column/testable/unique_testable.rb +37 -0
  11. data/lib/active_record/dbt/config.rb +45 -0
  12. data/lib/active_record/dbt/configuration/data_sync.rb +15 -0
  13. data/lib/active_record/dbt/configuration/logger.rb +41 -0
  14. data/lib/active_record/dbt/configuration/parser.rb +15 -0
  15. data/lib/active_record/dbt/configuration/used_dbt_package.rb +25 -0
  16. data/lib/active_record/dbt/dbt_package/dbt_utils/table/testable/unique_combination_of_columns_testable.rb +42 -0
  17. data/lib/active_record/dbt/dbt_package/dbterd/column/testable/relationships_meta_relationship_type.rb +138 -0
  18. data/lib/active_record/dbt/factory/columns_factory.rb +31 -0
  19. data/lib/active_record/dbt/factory/model/staging_factory.rb +22 -0
  20. data/lib/active_record/dbt/factory/source_factory.rb +16 -0
  21. data/lib/active_record/dbt/factory/table_factory.rb +16 -0
  22. data/lib/active_record/dbt/factory/tables_factory.rb +15 -0
  23. data/lib/active_record/dbt/model/staging/base.rb +73 -0
  24. data/lib/active_record/dbt/model/staging/sql.rb +43 -0
  25. data/lib/active_record/dbt/model/staging/yml.rb +108 -0
  26. data/lib/active_record/dbt/railtie.rb +8 -0
  27. data/lib/active_record/dbt/source/yml.rb +37 -0
  28. data/lib/active_record/dbt/table/base.rb +16 -0
  29. data/lib/active_record/dbt/table/test.rb +19 -0
  30. data/lib/active_record/dbt/table/yml.rb +75 -0
  31. data/lib/active_record/dbt/version.rb +7 -0
  32. data/lib/active_record/dbt.rb +17 -0
  33. data/lib/generators/active_record/dbt/config/USAGE +9 -0
  34. data/lib/generators/active_record/dbt/config/config_generator.rb +30 -0
  35. data/lib/generators/active_record/dbt/config/templates/source_config.yml.tt +68 -0
  36. data/lib/generators/active_record/dbt/initializer/USAGE +8 -0
  37. data/lib/generators/active_record/dbt/initializer/initializer_generator.rb +15 -0
  38. data/lib/generators/active_record/dbt/initializer/templates/dbt.rb +10 -0
  39. data/lib/generators/active_record/dbt/source/USAGE +8 -0
  40. data/lib/generators/active_record/dbt/source/source_generator.rb +22 -0
  41. data/lib/generators/active_record/dbt/staging_model/USAGE +9 -0
  42. data/lib/generators/active_record/dbt/staging_model/staging_model_generator.rb +38 -0
  43. data/lib/generators/active_record/dbt/staging_model/templates/staging_model.sql.tt +29 -0
  44. data/lib/tasks/active_record/dbt_tasks.rake +6 -0
  45. metadata +133 -0
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveRecord
4
+ module Dbt
5
+ module Generators
6
+ class StagingModelGenerator < Rails::Generators::NamedBase
7
+ source_root File.expand_path('templates', __dir__)
8
+
9
+ def create_staging_model_sql_file
10
+ template 'staging_model.sql.tt', sql.export_path
11
+ end
12
+
13
+ def create_staging_model_yml_file
14
+ create_file yml.export_path, yml.yml_dump
15
+ end
16
+
17
+ private
18
+
19
+ def sql
20
+ @sql ||= ActiveRecord::Dbt::Model::Staging::Sql.new(name)
21
+ end
22
+
23
+ def yml
24
+ @yml ||= ActiveRecord::Dbt::Factory::Model::StagingFactory.yml_build(name)
25
+ end
26
+
27
+ def source_paths
28
+ config_directory_path = ActiveRecord::Dbt::Config.instance.config_directory_path
29
+
30
+ [
31
+ File.expand_path(config_directory_path, Rails.root),
32
+ File.expand_path('./templates/', __dir__)
33
+ ]
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,29 @@
1
+ with
2
+
3
+ source as (
4
+
5
+ select * from {{ source('<%= sql.source_name %>', '<%= sql.table_name %>') }}
6
+
7
+ ),
8
+
9
+ renamed as (
10
+
11
+ select
12
+
13
+ <%- sql.select_column_names.each_with_index do |(column_type, columns), column_type_index| -%>
14
+ -- <%= column_type %>
15
+ <%- columns.each_with_index do |column, column_index| -%>
16
+ <%- is_rename_primary_id = sql.primary_key_eql_id? && sql.primary_key?(column.name) -%>
17
+ <%- is_last_column = column_type_index == sql.select_column_names.size - 1 && column_index == columns.size - 1 -%>
18
+ <%= is_rename_primary_id ? "id as #{sql.rename_primary_id}" : column.name %><% unless is_last_column -%>,<%- end %>
19
+ <%- if column_type_index != sql.select_column_names.size - 1 && column_index == columns.size - 1 -%>
20
+
21
+ <%- end -%>
22
+ <%- end -%>
23
+ <%- end -%>
24
+
25
+ from source
26
+
27
+ )
28
+
29
+ select * from renamed
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # desc "Explaining what the task does"
4
+ # task :activerecord_dbt do
5
+ # # Task goes here
6
+ # end
metadata ADDED
@@ -0,0 +1,133 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: activerecord-dbt
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - yamotech
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-07-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '7.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '7.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '7.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '7.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: zeitwerk
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '2.6'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '2.6'
55
+ description: Generate dbt files from the information of the database connected by
56
+ ActiveRecord.
57
+ email:
58
+ - nothings.2c9@gmail.com
59
+ executables: []
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - LICENSE
64
+ - README.md
65
+ - Rakefile
66
+ - lib/active_record/dbt.rb
67
+ - lib/active_record/dbt/column/column.rb
68
+ - lib/active_record/dbt/column/test.rb
69
+ - lib/active_record/dbt/column/testable/accepted_values_testable.rb
70
+ - lib/active_record/dbt/column/testable/not_null_testable.rb
71
+ - lib/active_record/dbt/column/testable/relationships_testable.rb
72
+ - lib/active_record/dbt/column/testable/unique_testable.rb
73
+ - lib/active_record/dbt/config.rb
74
+ - lib/active_record/dbt/configuration/data_sync.rb
75
+ - lib/active_record/dbt/configuration/logger.rb
76
+ - lib/active_record/dbt/configuration/parser.rb
77
+ - lib/active_record/dbt/configuration/used_dbt_package.rb
78
+ - lib/active_record/dbt/dbt_package/dbt_utils/table/testable/unique_combination_of_columns_testable.rb
79
+ - lib/active_record/dbt/dbt_package/dbterd/column/testable/relationships_meta_relationship_type.rb
80
+ - lib/active_record/dbt/factory/columns_factory.rb
81
+ - lib/active_record/dbt/factory/model/staging_factory.rb
82
+ - lib/active_record/dbt/factory/source_factory.rb
83
+ - lib/active_record/dbt/factory/table_factory.rb
84
+ - lib/active_record/dbt/factory/tables_factory.rb
85
+ - lib/active_record/dbt/model/staging/base.rb
86
+ - lib/active_record/dbt/model/staging/sql.rb
87
+ - lib/active_record/dbt/model/staging/yml.rb
88
+ - lib/active_record/dbt/railtie.rb
89
+ - lib/active_record/dbt/source/yml.rb
90
+ - lib/active_record/dbt/table/base.rb
91
+ - lib/active_record/dbt/table/test.rb
92
+ - lib/active_record/dbt/table/yml.rb
93
+ - lib/active_record/dbt/version.rb
94
+ - lib/generators/active_record/dbt/config/USAGE
95
+ - lib/generators/active_record/dbt/config/config_generator.rb
96
+ - lib/generators/active_record/dbt/config/templates/source_config.yml.tt
97
+ - lib/generators/active_record/dbt/initializer/USAGE
98
+ - lib/generators/active_record/dbt/initializer/initializer_generator.rb
99
+ - lib/generators/active_record/dbt/initializer/templates/dbt.rb
100
+ - lib/generators/active_record/dbt/source/USAGE
101
+ - lib/generators/active_record/dbt/source/source_generator.rb
102
+ - lib/generators/active_record/dbt/staging_model/USAGE
103
+ - lib/generators/active_record/dbt/staging_model/staging_model_generator.rb
104
+ - lib/generators/active_record/dbt/staging_model/templates/staging_model.sql.tt
105
+ - lib/tasks/active_record/dbt_tasks.rake
106
+ homepage: https://github.com/yamotech/activerecord-dbt
107
+ licenses:
108
+ - MIT
109
+ metadata:
110
+ homepage_uri: https://github.com/yamotech/activerecord-dbt
111
+ source_code_uri: https://github.com/yamotech/activerecord-dbt
112
+ changelog_uri: https://github.com/yamotech/activerecord-dbt/blob/main/CHANGELOG.md
113
+ rubygems_mfa_required: 'true'
114
+ post_install_message:
115
+ rdoc_options: []
116
+ require_paths:
117
+ - lib
118
+ required_ruby_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '3.0'
123
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ requirements: []
129
+ rubygems_version: 3.2.33
130
+ signing_key:
131
+ specification_version: 4
132
+ summary: Generate dbt files from the information of the database connected by ActiveRecord.
133
+ test_files: []