dbee 2.1.1 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,4 @@
1
- Theaters, Members, and Movies:
1
+ Theaters, Members, and Movies Tree Based:
2
2
  name: theater
3
3
  table: theaters
4
4
  models:
@@ -119,7 +119,217 @@ Theaters, Members, and Movies:
119
119
  - type: static
120
120
  name: genre
121
121
  value: comedy
122
+
123
+ # Note that since converting from the tree does not have as much context as
124
+ # converting from the DSL, the resulting graph is a bit different.
125
+ Theaters, Members, and Movies from Tree:
126
+ theater:
127
+ table: theaters
128
+ relationships:
129
+ members:
130
+ constraints:
131
+ - type: reference
132
+ parent: id
133
+ name: tid
134
+ - type: reference
135
+ parent: partition
136
+ name: partition
137
+ parent_theater:
138
+ constraints:
139
+ - type: reference
140
+ name: id
141
+ parent: parent_theater_id
142
+ members:
143
+ relationships:
144
+ demos:
145
+ constraints:
146
+ - type: reference
147
+ parent: id
148
+ name: member_id
149
+ movies:
150
+ constraints:
151
+ - type: reference
152
+ parent: id
153
+ name: member_id
154
+ favorite_comic_movies:
155
+ constraints:
156
+ - type: reference
157
+ parent: id
158
+ name: member_id
159
+ - type: static
160
+ name: genre
161
+ value: comic
162
+ favorite_mystery_movies:
163
+ constraints:
164
+ - type: reference
165
+ parent: id
166
+ name: member_id
167
+ - type: static
168
+ name: genre
169
+ value: mystery
170
+ favorite_comedy_movies:
171
+ constraints:
172
+ - type: reference
173
+ parent: id
174
+ name: member_id
175
+ - type: static
176
+ name: genre
177
+ value: comedy
178
+ demos:
179
+ table: demographics
180
+ relationships:
181
+ phone_numbers:
182
+ constraints:
183
+ - type: reference
184
+ parent: id
185
+ name: demographic_id
186
+ phone_numbers:
187
+ movies:
188
+ favorite_comic_movies:
189
+ table: movies
190
+ favorite_mystery_movies:
191
+ table: movies
192
+ favorite_comedy_movies:
193
+ table: movies
194
+ parent_theater:
195
+ table: theaters
196
+ relationships:
197
+ members:
198
+ constraints:
199
+ - type: reference
200
+ parent: id
201
+ name: tid
202
+ - type: reference
203
+ parent: partition
204
+ name: partition
205
+
206
+ Theaters, Members, and Movies from DSL:
207
+ theater:
208
+ table: theaters
209
+ relationships:
210
+ members:
211
+ model: member
212
+ constraints:
213
+ - type: reference
214
+ parent: id
215
+ name: tid
216
+ - type: reference
217
+ parent: partition
218
+ name: partition
219
+ parent_theater:
220
+ model: theater
221
+ constraints:
222
+ - type: reference
223
+ name: id
224
+ parent: parent_theater_id
225
+ member:
226
+ table: members
227
+ relationships:
228
+ movies:
229
+ model: movie
230
+ constraints:
231
+ - type: reference
232
+ parent: id
233
+ name: member_id
234
+ demos:
235
+ model: demographic
236
+ constraints:
237
+ - type: reference
238
+ parent: id
239
+ name: member_id
240
+ favorite_comic_movies:
241
+ model: movie
242
+ constraints:
243
+ - type: reference
244
+ parent: id
245
+ name: member_id
246
+ - type: static
247
+ name: genre
248
+ value: comic
249
+ favorite_mystery_movies:
250
+ model: movie
251
+ constraints:
252
+ - type: reference
253
+ parent: id
254
+ name: member_id
255
+ - type: static
256
+ name: genre
257
+ value: mystery
258
+ favorite_comedy_movies:
259
+ model: movie
260
+ constraints:
261
+ - type: reference
262
+ parent: id
263
+ name: member_id
264
+ - type: static
265
+ name: genre
266
+ value: comedy
267
+ demographic:
268
+ table: demographics
269
+ relationships:
270
+ phone_numbers:
271
+ model: phone_number
272
+ constraints:
273
+ - type: reference
274
+ parent: id
275
+ name: demographic_id
276
+ phone_number:
277
+ table: phone_numbers
278
+ movie:
279
+ table: movies
280
+
122
281
  Readme:
282
+ practice:
283
+ table: practices
284
+ relationships:
285
+ patients:
286
+ model: patient
287
+ constraints:
288
+ - type: reference
289
+ name: practice_id
290
+ parent: id
291
+ patient:
292
+ table: patients
293
+ relationships:
294
+ notes:
295
+ model: note
296
+ constraints:
297
+ - type: reference
298
+ name: patient_id
299
+ parent: id
300
+ work_phone_number:
301
+ model: phone_number
302
+ constraints:
303
+ - type: reference
304
+ name: patient_id
305
+ parent: id
306
+ - type: static
307
+ name: phone_number_type
308
+ value: work
309
+ cell_phone_number:
310
+ model: phone_number
311
+ constraints:
312
+ - type: reference
313
+ name: patient_id
314
+ parent: id
315
+ - type: static
316
+ name: phone_number_type
317
+ value: cell
318
+ fax_phone_number:
319
+ model: phone_number
320
+ constraints:
321
+ - type: reference
322
+ name: patient_id
323
+ parent: id
324
+ - type: static
325
+ name: phone_number_type
326
+ value: fax
327
+ note:
328
+ table: notes
329
+ phone_number:
330
+ table: phones
331
+
332
+ Readme Tree Based:
123
333
  name: practice
124
334
  table: practices
125
335
  models:
@@ -161,63 +371,51 @@ Readme:
161
371
  - type: static
162
372
  name: phone_number_type
163
373
  value: fax
374
+
164
375
  Cycle Example:
165
- name: a
166
- table: as
167
- models:
168
- - name: b1
169
- table: bs
170
- models:
171
- - name: c
172
- table: cs
173
- models:
174
- - name: a
175
- table: as
176
- - name: d
177
- table: ds
178
- models:
179
- - name: a
180
- table: as
181
- - name: b2
182
- table: bs
183
- models:
184
- - name: c
185
- table: cs
186
- models:
187
- - name: a
188
- table: as
189
- - name: d
190
- table: ds
191
- models:
192
- - name: a
193
- table: as
194
- models:
195
- - name: b1
196
- table: bs
197
- models:
198
- - name: c
199
- table: cs
376
+ a:
377
+ table: as
378
+ relationships:
379
+ b1:
380
+ model: b
381
+ b2:
382
+ model: b
383
+ b:
384
+ table: bs
385
+ relationships:
386
+ c:
387
+ d:
388
+ c:
389
+ table: cs
390
+ relationships:
391
+ a:
392
+ d:
393
+ table: ds
394
+ relationships:
395
+ a:
200
396
 
201
397
  Partitioner Example 1:
202
- name: dog
203
- table: animals
204
- partitioners:
205
- - name: type
206
- value: Dog
207
- - name: deleted
208
- value: false
398
+ dog:
399
+ table: animals
400
+ partitioners:
401
+ - name: type
402
+ value: Dog
403
+ - name: deleted
404
+ value: false
209
405
 
210
406
  Partitioner Example 2:
211
- name: owner
212
- table: owners
213
- models:
214
- - name: dogs
215
- table: animals
216
- constraints:
217
- - name: owner_id
218
- parent: id
219
- partitioners:
220
- - name: type
221
- value: Dog
222
- - name: deleted
223
- value: false
407
+ owner:
408
+ table: owners
409
+ relationships:
410
+ dogs:
411
+ model: dog
412
+ constraints:
413
+ - name: owner_id
414
+ parent: id
415
+ dog:
416
+ table: animals
417
+ partitioners:
418
+ - name: type
419
+ value: Dog
420
+ - name: deleted
421
+ value: false
data/spec/spec_helper.rb CHANGED
@@ -9,6 +9,13 @@
9
9
 
10
10
  require 'yaml'
11
11
  require 'pry'
12
+ require 'pry-byebug'
13
+
14
+ RSpec.configure do |config|
15
+ # Allow for disabling auto focus mode in certain environments like CI to
16
+ # prevent false positives when only a subset of the suite passes.
17
+ config.filter_run_when_matching :focus unless ENV['DISABLE_RSPEC_FOCUS'] == 'true'
18
+ end
12
19
 
13
20
  unless ENV['DISABLE_SIMPLECOV'] == 'true'
14
21
  require 'simplecov'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dbee
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Ruggio
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-14 00:00:00.000000000 Z
11
+ date: 2021-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: acts_as_hashable
@@ -72,6 +72,20 @@ dependencies:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: pry-byebug
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
75
89
  - !ruby/object:Gem::Dependency
76
90
  name: rake
77
91
  requirement: !ruby/object:Gem::Requirement
@@ -106,28 +120,56 @@ dependencies:
106
120
  requirements:
107
121
  - - "~>"
108
122
  - !ruby/object:Gem::Version
109
- version: 0.88.0
123
+ version: '1'
110
124
  type: :development
111
125
  prerelease: false
112
126
  version_requirements: !ruby/object:Gem::Requirement
113
127
  requirements:
114
128
  - - "~>"
115
129
  - !ruby/object:Gem::Version
116
- version: 0.88.0
130
+ version: '1'
131
+ - !ruby/object:Gem::Dependency
132
+ name: rubocop-rake
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ - !ruby/object:Gem::Dependency
146
+ name: rubocop-rspec
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
117
159
  - !ruby/object:Gem::Dependency
118
160
  name: simplecov
119
161
  requirement: !ruby/object:Gem::Requirement
120
162
  requirements:
121
163
  - - "~>"
122
164
  - !ruby/object:Gem::Version
123
- version: 0.18.5
165
+ version: 0.19.0
124
166
  type: :development
125
167
  prerelease: false
126
168
  version_requirements: !ruby/object:Gem::Requirement
127
169
  requirements:
128
170
  - - "~>"
129
171
  - !ruby/object:Gem::Version
130
- version: 0.18.5
172
+ version: 0.19.0
131
173
  - !ruby/object:Gem::Dependency
132
174
  name: simplecov-console
133
175
  requirement: !ruby/object:Gem::Requirement
@@ -174,6 +216,7 @@ files:
174
216
  - lib/dbee/dsl/association_builder.rb
175
217
  - lib/dbee/dsl/methods.rb
176
218
  - lib/dbee/dsl/reflectable.rb
219
+ - lib/dbee/dsl_schema_builder.rb
177
220
  - lib/dbee/key_chain.rb
178
221
  - lib/dbee/key_path.rb
179
222
  - lib/dbee/model.rb
@@ -182,6 +225,8 @@ files:
182
225
  - lib/dbee/model/constraints/reference.rb
183
226
  - lib/dbee/model/constraints/static.rb
184
227
  - lib/dbee/model/partitioner.rb
228
+ - lib/dbee/model/relationships.rb
229
+ - lib/dbee/model/relationships/basic.rb
185
230
  - lib/dbee/providers.rb
186
231
  - lib/dbee/providers/null_provider.rb
187
232
  - lib/dbee/query.rb
@@ -202,9 +247,14 @@ files:
202
247
  - lib/dbee/query/sorters/ascending.rb
203
248
  - lib/dbee/query/sorters/base.rb
204
249
  - lib/dbee/query/sorters/descending.rb
250
+ - lib/dbee/schema.rb
251
+ - lib/dbee/schema_creator.rb
252
+ - lib/dbee/schema_from_tree_based_model.rb
253
+ - lib/dbee/util/make_keyed_by.rb
205
254
  - lib/dbee/version.rb
206
255
  - spec/dbee/base_spec.rb
207
256
  - spec/dbee/constant_resolver_spec.rb
257
+ - spec/dbee/dsl_schema_builder_spec.rb
208
258
  - spec/dbee/key_chain_spec.rb
209
259
  - spec/dbee/key_path_spec.rb
210
260
  - spec/dbee/model/constraints/base_spec.rb
@@ -220,6 +270,9 @@ files:
220
270
  - spec/dbee/query/sorters/base_spec.rb
221
271
  - spec/dbee/query/sorters/descending_spec.rb
222
272
  - spec/dbee/query_spec.rb
273
+ - spec/dbee/schema_creator_spec.rb
274
+ - spec/dbee/schema_from_tree_based_model_spec.rb
275
+ - spec/dbee/schema_spec.rb
223
276
  - spec/dbee_spec.rb
224
277
  - spec/fixtures/models.rb
225
278
  - spec/fixtures/models.yaml
@@ -233,7 +286,7 @@ metadata:
233
286
  documentation_uri: https://www.rubydoc.info/gems/dbee
234
287
  homepage_uri: https://github.com/bluemarblepayroll/dbee
235
288
  source_code_uri: https://github.com/bluemarblepayroll/dbee
236
- post_install_message:
289
+ post_install_message:
237
290
  rdoc_options: []
238
291
  require_paths:
239
292
  - lib
@@ -249,12 +302,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
249
302
  version: '0'
250
303
  requirements: []
251
304
  rubygems_version: 3.0.3
252
- signing_key:
305
+ signing_key:
253
306
  specification_version: 4
254
307
  summary: Adhoc Reporting SQL Generator
255
308
  test_files:
256
309
  - spec/dbee/base_spec.rb
257
310
  - spec/dbee/constant_resolver_spec.rb
311
+ - spec/dbee/dsl_schema_builder_spec.rb
258
312
  - spec/dbee/key_chain_spec.rb
259
313
  - spec/dbee/key_path_spec.rb
260
314
  - spec/dbee/model/constraints/base_spec.rb
@@ -270,6 +324,9 @@ test_files:
270
324
  - spec/dbee/query/sorters/base_spec.rb
271
325
  - spec/dbee/query/sorters/descending_spec.rb
272
326
  - spec/dbee/query_spec.rb
327
+ - spec/dbee/schema_creator_spec.rb
328
+ - spec/dbee/schema_from_tree_based_model_spec.rb
329
+ - spec/dbee/schema_spec.rb
273
330
  - spec/dbee_spec.rb
274
331
  - spec/fixtures/models.rb
275
332
  - spec/fixtures/models.yaml