scenic-cascade 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 (42) hide show
  1. checksums.yaml +7 -0
  2. data/.dockerignore +6 -0
  3. data/.env +4 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +24 -0
  6. data/.ruby-version +1 -0
  7. data/CHANGELOG.md +5 -0
  8. data/CODE_OF_CONDUCT.md +84 -0
  9. data/Dockerfile +6 -0
  10. data/Gemfile +20 -0
  11. data/Gemfile.lock +231 -0
  12. data/LICENSE +201 -0
  13. data/README.md +95 -0
  14. data/Rakefile +22 -0
  15. data/Steepfile +9 -0
  16. data/docker-compose.yml +16 -0
  17. data/lib/generators/scenic/view/cascade/USAGE +15 -0
  18. data/lib/generators/scenic/view/cascade/cascade_generator.rb +38 -0
  19. data/lib/generators/scenic/view/cascade/templates/db/migrate/create_view.rb.erb +7 -0
  20. data/lib/generators/scenic/view/cascade/templates/db/migrate/update_view.rb.erb +26 -0
  21. data/lib/scenic/cascade/definition_finder.rb +41 -0
  22. data/lib/scenic/cascade/dependency.rb +37 -0
  23. data/lib/scenic/cascade/dependency_finder.rb +51 -0
  24. data/lib/scenic/cascade/dependent_finder.rb +53 -0
  25. data/lib/scenic/cascade/version.rb +7 -0
  26. data/lib/scenic/cascade/view.rb +36 -0
  27. data/lib/scenic/cascade/view_with_version.rb +34 -0
  28. data/lib/scenic/cascade.rb +18 -0
  29. data/manifest.yaml +2 -0
  30. data/rbs_collection.lock.yaml +188 -0
  31. data/rbs_collection.yaml +15 -0
  32. data/sig/generators/scenic/view/cascade/cascade_generator.rbs +13 -0
  33. data/sig/generators/scenic/view/view_generator.rbs +14 -0
  34. data/sig/scenic/cascade/definition_finder.rbs +14 -0
  35. data/sig/scenic/cascade/dependency.rbs +22 -0
  36. data/sig/scenic/cascade/dependency_finder.rbs +11 -0
  37. data/sig/scenic/cascade/dependent_finder.rbs +12 -0
  38. data/sig/scenic/cascade/view.rbs +21 -0
  39. data/sig/scenic/cascade/view_with_version.rbs +17 -0
  40. data/sig/scenic/cascade.rbs +13 -0
  41. data/sig/scenic/definition.rbs +9 -0
  42. metadata +101 -0
@@ -0,0 +1,188 @@
1
+ ---
2
+ path: ".gem_rbs_collection"
3
+ gems:
4
+ - name: actionpack
5
+ version: '6.0'
6
+ source:
7
+ type: git
8
+ name: ruby/gem_rbs_collection
9
+ revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
10
+ remote: https://github.com/ruby/gem_rbs_collection.git
11
+ repo_dir: gems
12
+ - name: actionview
13
+ version: '6.0'
14
+ source:
15
+ type: git
16
+ name: ruby/gem_rbs_collection
17
+ revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
18
+ remote: https://github.com/ruby/gem_rbs_collection.git
19
+ repo_dir: gems
20
+ - name: activemodel
21
+ version: '6.0'
22
+ source:
23
+ type: git
24
+ name: ruby/gem_rbs_collection
25
+ revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
26
+ remote: https://github.com/ruby/gem_rbs_collection.git
27
+ repo_dir: gems
28
+ - name: activerecord
29
+ version: '6.1'
30
+ source:
31
+ type: git
32
+ name: ruby/gem_rbs_collection
33
+ revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
34
+ remote: https://github.com/ruby/gem_rbs_collection.git
35
+ repo_dir: gems
36
+ - name: activesupport
37
+ version: '6.0'
38
+ source:
39
+ type: git
40
+ name: ruby/gem_rbs_collection
41
+ revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
42
+ remote: https://github.com/ruby/gem_rbs_collection.git
43
+ repo_dir: gems
44
+ - name: base64
45
+ version: '0'
46
+ source:
47
+ type: stdlib
48
+ - name: bigdecimal
49
+ version: '0'
50
+ source:
51
+ type: stdlib
52
+ - name: concurrent-ruby
53
+ version: '1.1'
54
+ source:
55
+ type: git
56
+ name: ruby/gem_rbs_collection
57
+ revision: 20e6e0f0685139dbd29df50e03367e222aa5d1b8
58
+ remote: https://github.com/ruby/gem_rbs_collection.git
59
+ repo_dir: gems
60
+ - name: connection_pool
61
+ version: '2.4'
62
+ source:
63
+ type: git
64
+ name: ruby/gem_rbs_collection
65
+ revision: 20e6e0f0685139dbd29df50e03367e222aa5d1b8
66
+ remote: https://github.com/ruby/gem_rbs_collection.git
67
+ repo_dir: gems
68
+ - name: date
69
+ version: '0'
70
+ source:
71
+ type: stdlib
72
+ - name: dbm
73
+ version: '0'
74
+ source:
75
+ type: stdlib
76
+ - name: fileutils
77
+ version: '0'
78
+ source:
79
+ type: stdlib
80
+ - name: i18n
81
+ version: '1.10'
82
+ source:
83
+ type: git
84
+ name: ruby/gem_rbs_collection
85
+ revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
86
+ remote: https://github.com/ruby/gem_rbs_collection.git
87
+ repo_dir: gems
88
+ - name: io-console
89
+ version: '0'
90
+ source:
91
+ type: stdlib
92
+ - name: logger
93
+ version: '0'
94
+ source:
95
+ type: stdlib
96
+ - name: minitest
97
+ version: '0'
98
+ source:
99
+ type: stdlib
100
+ - name: monitor
101
+ version: '0'
102
+ source:
103
+ type: stdlib
104
+ - name: mutex_m
105
+ version: '0'
106
+ source:
107
+ type: stdlib
108
+ - name: nokogiri
109
+ version: '1.11'
110
+ source:
111
+ type: git
112
+ name: ruby/gem_rbs_collection
113
+ revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
114
+ remote: https://github.com/ruby/gem_rbs_collection.git
115
+ repo_dir: gems
116
+ - name: pathname
117
+ version: '0'
118
+ source:
119
+ type: stdlib
120
+ - name: pstore
121
+ version: '0'
122
+ source:
123
+ type: stdlib
124
+ - name: psych
125
+ version: '0'
126
+ source:
127
+ type: stdlib
128
+ - name: rack
129
+ version: 2.2.2
130
+ source:
131
+ type: git
132
+ name: ruby/gem_rbs_collection
133
+ revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
134
+ remote: https://github.com/ruby/gem_rbs_collection.git
135
+ repo_dir: gems
136
+ - name: rails-dom-testing
137
+ version: '2.0'
138
+ source:
139
+ type: git
140
+ name: ruby/gem_rbs_collection
141
+ revision: 20e6e0f0685139dbd29df50e03367e222aa5d1b8
142
+ remote: https://github.com/ruby/gem_rbs_collection.git
143
+ repo_dir: gems
144
+ - name: railties
145
+ version: '6.0'
146
+ source:
147
+ type: git
148
+ name: ruby/gem_rbs_collection
149
+ revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
150
+ remote: https://github.com/ruby/gem_rbs_collection.git
151
+ repo_dir: gems
152
+ - name: rake
153
+ version: '13.0'
154
+ source:
155
+ type: git
156
+ name: ruby/gem_rbs_collection
157
+ revision: 20e6e0f0685139dbd29df50e03367e222aa5d1b8
158
+ remote: https://github.com/ruby/gem_rbs_collection.git
159
+ repo_dir: gems
160
+ - name: rdoc
161
+ version: '0'
162
+ source:
163
+ type: stdlib
164
+ - name: singleton
165
+ version: '0'
166
+ source:
167
+ type: stdlib
168
+ - name: thor
169
+ version: '1.2'
170
+ source:
171
+ type: git
172
+ name: ruby/gem_rbs_collection
173
+ revision: 20e6e0f0685139dbd29df50e03367e222aa5d1b8
174
+ remote: https://github.com/ruby/gem_rbs_collection.git
175
+ repo_dir: gems
176
+ - name: time
177
+ version: '0'
178
+ source:
179
+ type: stdlib
180
+ - name: timeout
181
+ version: '0'
182
+ source:
183
+ type: stdlib
184
+ - name: tsort
185
+ version: '0'
186
+ source:
187
+ type: stdlib
188
+ gemfile_lock_path: Gemfile.lock
@@ -0,0 +1,15 @@
1
+ # Download sources
2
+ sources:
3
+ - name: ruby/gem_rbs_collection
4
+ remote: https://github.com/ruby/gem_rbs_collection.git
5
+ revision: main
6
+ repo_dir: gems
7
+
8
+ # A directory to install the downloaded RBSs
9
+ path: .gem_rbs_collection
10
+
11
+ gems:
12
+ # Skip loading rbs gem's RBS.
13
+ # It's unnecessary if you don't use rbs as a library.
14
+ - name: rbs
15
+ ignore: true
@@ -0,0 +1,13 @@
1
+ module Scenic
2
+ module Generators
3
+ module View
4
+ class CascadeGenerator < Scenic::Generators::ViewGenerator
5
+ def create_migration_file: -> void
6
+
7
+ private
8
+
9
+ def dependents: -> Array[Scenic::Cascade::ViewWithVersion]
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ module Scenic
2
+ module Generators
3
+ class ViewGenerator
4
+ def self.source_root: (String?) -> void
5
+ def plural_name: -> String
6
+ def plural_file_name: -> String
7
+ def migration_template: (String, String) -> void
8
+
9
+ def creating_new_view?: -> bool
10
+ def destroying_initial_view?: -> bool
11
+ def version: -> String
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Scenic
2
+ module Cascade
3
+ module DefinitionFinder
4
+ module ClassMethods
5
+ def find_definitions_of: (String) -> Array[Scenic::Definition]
6
+ def find_latest_definition_of: (String) -> Scenic::Definition
7
+
8
+ private
9
+
10
+ def go: (String, Integer) -> Array[Scenic::Definition]
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,22 @@
1
+ module Scenic
2
+ module Cascade
3
+ interface _DependencyLike
4
+ def from: -> Scenic::Cascade::View
5
+ def to: -> Scenic::Cascade::View
6
+ end
7
+
8
+ class Dependency
9
+ attr_reader from: Scenic::Cascade::View
10
+ attr_reader to: Scenic::Cascade::View
11
+
12
+ def initialize: (from: Scenic::Cascade::View, to: Scenic::Cascade::View) -> void
13
+
14
+ def ==: (_DependencyLike) -> bool
15
+
16
+ def to_s: -> String
17
+ def inspect: -> String
18
+
19
+ def self.from_hash: ({ 'from' => String, 'from_materialized' => bool, 'to' => String, 'to_materialized' => bool }) -> Dependency
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,11 @@
1
+ module Scenic
2
+ module Cascade
3
+ module DependencyFinder
4
+ module ClassMethods
5
+ DEPENDENCY_SQL: String
6
+
7
+ def view_dependencies_of: (String, ?recursive: bool) -> Array[Scenic::Cascade::Dependency]
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ module Scenic
2
+ module Cascade
3
+ module DependentFinder
4
+ module ClassMethods
5
+ DEPENDANT_SQL: String
6
+
7
+ def view_dependents_of: (String, ?recursive: bool) -> Array[Scenic::Cascade::Dependency]
8
+ alias view_dependants_of view_dependents_of
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,21 @@
1
+ module Scenic
2
+ module Cascade
3
+ interface _ViewLike
4
+ def name: -> String
5
+ def materialized?: -> bool
6
+ end
7
+
8
+ class View
9
+ attr_reader name: String
10
+
11
+ def initialize: (name: String, materialized: bool) -> void
12
+
13
+ def materialized?: -> bool
14
+
15
+ def ==: (_ViewLike) -> bool
16
+
17
+ def to_s: -> String
18
+ def inspect: -> String
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ module Scenic
2
+ module Cascade
3
+ interface _ViewWithVersionLike
4
+ def name: -> String
5
+ def version: -> Integer
6
+ def materialized?: -> bool
7
+ end
8
+
9
+ class ViewWithVersion < Scenic::Cascade::View
10
+ attr_reader version: Integer
11
+
12
+ def initialize: (name: String, version: Integer, materialized: bool) -> void
13
+
14
+ def ==: (_ViewWithVersionLike) -> bool
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,13 @@
1
+ module Scenic
2
+ module Cascade
3
+ VERSION: String
4
+
5
+ def self.find_definitions_of: (String) -> Scenic::Definition
6
+ def self.find_latest_definition_of: (String) -> Scenic::Definition
7
+
8
+ def self.view_dependents_of: (String, ?recursive: bool) -> Array[Dependency]
9
+ alias self.view_dependants_of self.view_dependents_of
10
+
11
+ def self.view_dependencies_of: (String, ?recursive: bool) -> Array[Dependency]
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ module Scenic
2
+ module Definition
3
+ def self.new: (String, Integer) -> Scenic::Definition
4
+
5
+ def full_path: -> Pathname
6
+
7
+ def version: -> String
8
+ end
9
+ end
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: scenic-cascade
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Akiomi Kamakura
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2023-12-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: scenic
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ description: A migration scenic file generator that supports cascading view updates
28
+ email:
29
+ - akiomik@gmail.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".dockerignore"
35
+ - ".env"
36
+ - ".rspec"
37
+ - ".rubocop.yml"
38
+ - ".ruby-version"
39
+ - CHANGELOG.md
40
+ - CODE_OF_CONDUCT.md
41
+ - Dockerfile
42
+ - Gemfile
43
+ - Gemfile.lock
44
+ - LICENSE
45
+ - README.md
46
+ - Rakefile
47
+ - Steepfile
48
+ - docker-compose.yml
49
+ - lib/generators/scenic/view/cascade/USAGE
50
+ - lib/generators/scenic/view/cascade/cascade_generator.rb
51
+ - lib/generators/scenic/view/cascade/templates/db/migrate/create_view.rb.erb
52
+ - lib/generators/scenic/view/cascade/templates/db/migrate/update_view.rb.erb
53
+ - lib/scenic/cascade.rb
54
+ - lib/scenic/cascade/definition_finder.rb
55
+ - lib/scenic/cascade/dependency.rb
56
+ - lib/scenic/cascade/dependency_finder.rb
57
+ - lib/scenic/cascade/dependent_finder.rb
58
+ - lib/scenic/cascade/version.rb
59
+ - lib/scenic/cascade/view.rb
60
+ - lib/scenic/cascade/view_with_version.rb
61
+ - manifest.yaml
62
+ - rbs_collection.lock.yaml
63
+ - rbs_collection.yaml
64
+ - sig/generators/scenic/view/cascade/cascade_generator.rbs
65
+ - sig/generators/scenic/view/view_generator.rbs
66
+ - sig/scenic/cascade.rbs
67
+ - sig/scenic/cascade/definition_finder.rbs
68
+ - sig/scenic/cascade/dependency.rbs
69
+ - sig/scenic/cascade/dependency_finder.rbs
70
+ - sig/scenic/cascade/dependent_finder.rbs
71
+ - sig/scenic/cascade/view.rbs
72
+ - sig/scenic/cascade/view_with_version.rbs
73
+ - sig/scenic/definition.rbs
74
+ homepage: https://github.com/akiomik/scenic-cascade
75
+ licenses:
76
+ - Apache-2.0
77
+ metadata:
78
+ homepage_uri: https://github.com/akiomik/scenic-cascade
79
+ source_code_uri: https://github.com/akiomik/scenic-cascade
80
+ changelog_uri: https://github.com/akiomik/scenic-cascade/blob/main/CHANGELOG.md
81
+ rubygems_mfa_required: 'true'
82
+ post_install_message:
83
+ rdoc_options: []
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: 2.6.0
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ requirements: []
97
+ rubygems_version: 3.4.10
98
+ signing_key:
99
+ specification_version: 4
100
+ summary: A migration scenic file generator that supports cascading view updates
101
+ test_files: []