computed_model 0.2.2 → 0.3.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.
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'set'
4
+
5
+ module ComputedModel
6
+ # A plan for batch loading. Created by {ComputedModel::DepGraph::Sorted#plan}.
7
+ #
8
+ # @api private
9
+ class Plan
10
+ # @return [Array<ComputedModel::Plan::Node>] fields in load order
11
+ attr_reader :load_order
12
+ # @return [Set<Symbol>] toplevel dependencies
13
+ attr_reader :toplevel
14
+
15
+ # @param load_order [Array<ComputedModel::Plan::Node>] fields in load order
16
+ # @param toplevel [Set<Symbol>] toplevel dependencies
17
+ def initialize(load_order, toplevel)
18
+ @load_order = load_order.freeze
19
+ @nodes = load_order.map { |node| [node.name, node] }.to_h
20
+ @toplevel = toplevel
21
+ end
22
+
23
+ # @param name [Symbol]
24
+ # @return [ComputedModel::Plan::Node, nil]
25
+ def [](name)
26
+ @nodes[name]
27
+ end
28
+
29
+ # A set of information necessary to invoke the loader or the computed def.
30
+ class Node
31
+ # @return [Symbol] field name
32
+ attr_reader :name
33
+ # @return [Set<Symbol>] set of dependency names
34
+ attr_reader :deps
35
+ # @return [ComputedModel::NormalizableArray] subfield selectors, payloads sent to the dependency
36
+ attr_reader :subfields
37
+
38
+ # @param name [Symbol] field name
39
+ # @param deps [Set<Symbol>] set of dependency names
40
+ # @param subfields [ComputedModel::NormalizableArray] subfield selectors, payloads sent to the dependency
41
+ def initialize(name, deps, subfields)
42
+ @name = name
43
+ @deps = deps
44
+ @subfields = subfields
45
+ end
46
+ end
47
+ end
48
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ComputedModel
4
- VERSION = "0.2.2"
4
+ VERSION = "0.3.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: computed_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masaki Hara
@@ -10,8 +10,22 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2021-03-24 00:00:00.000000000 Z
13
+ date: 2021-05-25 00:00:00.000000000 Z
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activesupport
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
15
29
  - !ruby/object:Gem::Dependency
16
30
  name: bundler
17
31
  requirement: !ruby/object:Gem::Requirement
@@ -54,6 +68,76 @@ dependencies:
54
68
  - - "~>"
55
69
  - !ruby/object:Gem::Version
56
70
  version: '3.0'
71
+ - !ruby/object:Gem::Dependency
72
+ name: activerecord
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '6.1'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: '6.1'
85
+ - !ruby/object:Gem::Dependency
86
+ name: sqlite3
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: '1.4'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: '1.4'
99
+ - !ruby/object:Gem::Dependency
100
+ name: factory_bot
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '6.1'
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: '6.1'
113
+ - !ruby/object:Gem::Dependency
114
+ name: simplecov
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: 0.21.2
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - "~>"
125
+ - !ruby/object:Gem::Version
126
+ version: 0.21.2
127
+ - !ruby/object:Gem::Dependency
128
+ name: simplecov-lcov
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: 0.8.0
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - "~>"
139
+ - !ruby/object:Gem::Version
140
+ version: 0.8.0
57
141
  description: |
58
142
  ComputedModel is a helper for building a read-only model (sometimes called a view)
59
143
  from multiple sources of models.
@@ -75,13 +159,20 @@ files:
75
159
  - ".rspec"
76
160
  - ".yardopts"
77
161
  - CHANGELOG.md
162
+ - CONCEPTS.ja.md
163
+ - CONCEPTS.md
78
164
  - Gemfile
165
+ - Migration-0.3.md
166
+ - README.ja.md
79
167
  - README.md
80
168
  - Rakefile
81
169
  - bin/console
82
170
  - bin/setup
83
171
  - computed_model.gemspec
84
172
  - lib/computed_model.rb
173
+ - lib/computed_model/dep_graph.rb
174
+ - lib/computed_model/model.rb
175
+ - lib/computed_model/plan.rb
85
176
  - lib/computed_model/version.rb
86
177
  homepage: https://github.com/wantedly/computed_model
87
178
  licenses:
@@ -105,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
196
  - !ruby/object:Gem::Version
106
197
  version: '0'
107
198
  requirements: []
108
- rubygems_version: 3.2.3
199
+ rubygems_version: 3.1.6
109
200
  signing_key:
110
201
  specification_version: 4
111
202
  summary: Batch loader with dependency resolution and computed fields