cocina-models 0.29.0 → 0.30.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +10 -3
  3. data/README.md +11 -0
  4. data/cocina-models.gemspec +5 -0
  5. data/exe/generator +9 -0
  6. data/lib/cocina/generator.rb +18 -0
  7. data/lib/cocina/generator/generator.rb +80 -0
  8. data/lib/cocina/generator/schema.rb +84 -0
  9. data/lib/cocina/generator/schema_array.rb +20 -0
  10. data/lib/cocina/generator/schema_base.rb +49 -0
  11. data/lib/cocina/generator/schema_ref.rb +16 -0
  12. data/lib/cocina/generator/schema_value.rb +60 -0
  13. data/lib/cocina/generator/vocab.rb +63 -0
  14. data/lib/cocina/models.rb +51 -25
  15. data/lib/cocina/models/access.rb +10 -0
  16. data/lib/cocina/models/admin_policy.rb +13 -56
  17. data/lib/cocina/models/admin_policy_administrative.rb +11 -0
  18. data/lib/cocina/models/administrative.rb +14 -0
  19. data/lib/cocina/models/catalog_link.rb +4 -1
  20. data/lib/cocina/models/collection.rb +21 -31
  21. data/lib/cocina/models/collection_identification.rb +9 -0
  22. data/lib/cocina/models/description.rb +1 -8
  23. data/lib/cocina/models/dro.rb +34 -70
  24. data/lib/cocina/models/dro_access.rb +16 -0
  25. data/lib/cocina/models/dro_structural.rb +14 -0
  26. data/lib/cocina/models/embargo.rb +16 -0
  27. data/lib/cocina/models/file.rb +20 -36
  28. data/lib/cocina/models/file_administrative.rb +10 -0
  29. data/lib/cocina/models/file_set.rb +8 -15
  30. data/lib/cocina/models/file_set_structural.rb +9 -0
  31. data/lib/cocina/models/geographic.rb +10 -0
  32. data/lib/cocina/models/identification.rb +11 -0
  33. data/lib/cocina/models/message_digest.rb +17 -0
  34. data/lib/cocina/models/presentation.rb +12 -0
  35. data/lib/cocina/models/release_tag.rb +12 -7
  36. data/lib/cocina/models/request_admin_policy.rb +15 -3
  37. data/lib/cocina/models/request_collection.rb +21 -4
  38. data/lib/cocina/models/request_dro.rb +32 -11
  39. data/lib/cocina/models/request_dro_structural.rb +13 -0
  40. data/lib/cocina/models/request_file.rb +15 -6
  41. data/lib/cocina/models/request_file_set.rb +7 -9
  42. data/lib/cocina/models/request_file_set_structural.rb +9 -0
  43. data/lib/cocina/models/sequence.rb +2 -5
  44. data/lib/cocina/models/title.rb +12 -0
  45. data/lib/cocina/models/validator.rb +22 -0
  46. data/lib/cocina/models/version.rb +1 -1
  47. data/lib/cocina/models/vocab.rb +45 -60
  48. data/openapi.yml +695 -0
  49. metadata +101 -9
  50. data/lib/cocina/models/admin_policy_attributes.rb +0 -21
  51. data/lib/cocina/models/collection_attributes.rb +0 -22
  52. data/lib/cocina/models/dro_attributes.rb +0 -22
  53. data/lib/cocina/models/file_attributes.rb +0 -25
  54. data/lib/cocina/models/file_set_attributes.rb +0 -16
  55. data/lib/cocina/models/types.rb +0 -10
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocina-models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.29.0
4
+ version: 0.30.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-12 00:00:00.000000000 Z
11
+ date: 2020-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: dry-struct
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +52,48 @@ dependencies:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
54
  version: '1.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: openapi3_parser
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: openapi_parser
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: thor
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
41
97
  - !ruby/object:Gem::Dependency
42
98
  name: zeitwerk
43
99
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +122,20 @@ dependencies:
66
122
  - - "~>"
67
123
  - !ruby/object:Gem::Version
68
124
  version: '2.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: committee
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
69
139
  - !ruby/object:Gem::Dependency
70
140
  name: rake
71
141
  requirement: !ruby/object:Gem::Requirement
@@ -139,7 +209,8 @@ dependencies:
139
209
  description: SDR data models that can be validated
140
210
  email:
141
211
  - jcoyne@justincoyne.com
142
- executables: []
212
+ executables:
213
+ - generator
143
214
  extensions: []
144
215
  extra_rdoc_files: []
145
216
  files:
@@ -175,30 +246,51 @@ files:
175
246
  - docs/sampleETD/xn109qc9773_taco.json
176
247
  - docs/schema.json
177
248
  - docs/schema.md
249
+ - exe/generator
250
+ - lib/cocina/generator.rb
251
+ - lib/cocina/generator/generator.rb
252
+ - lib/cocina/generator/schema.rb
253
+ - lib/cocina/generator/schema_array.rb
254
+ - lib/cocina/generator/schema_base.rb
255
+ - lib/cocina/generator/schema_ref.rb
256
+ - lib/cocina/generator/schema_value.rb
257
+ - lib/cocina/generator/vocab.rb
178
258
  - lib/cocina/models.rb
259
+ - lib/cocina/models/access.rb
179
260
  - lib/cocina/models/admin_policy.rb
180
- - lib/cocina/models/admin_policy_attributes.rb
261
+ - lib/cocina/models/admin_policy_administrative.rb
262
+ - lib/cocina/models/administrative.rb
181
263
  - lib/cocina/models/catalog_link.rb
182
264
  - lib/cocina/models/checkable.rb
183
265
  - lib/cocina/models/collection.rb
184
- - lib/cocina/models/collection_attributes.rb
266
+ - lib/cocina/models/collection_identification.rb
185
267
  - lib/cocina/models/description.rb
186
268
  - lib/cocina/models/dro.rb
187
- - lib/cocina/models/dro_attributes.rb
269
+ - lib/cocina/models/dro_access.rb
270
+ - lib/cocina/models/dro_structural.rb
271
+ - lib/cocina/models/embargo.rb
188
272
  - lib/cocina/models/file.rb
189
- - lib/cocina/models/file_attributes.rb
273
+ - lib/cocina/models/file_administrative.rb
190
274
  - lib/cocina/models/file_set.rb
191
- - lib/cocina/models/file_set_attributes.rb
275
+ - lib/cocina/models/file_set_structural.rb
276
+ - lib/cocina/models/geographic.rb
277
+ - lib/cocina/models/identification.rb
278
+ - lib/cocina/models/message_digest.rb
279
+ - lib/cocina/models/presentation.rb
192
280
  - lib/cocina/models/release_tag.rb
193
281
  - lib/cocina/models/request_admin_policy.rb
194
282
  - lib/cocina/models/request_collection.rb
195
283
  - lib/cocina/models/request_dro.rb
284
+ - lib/cocina/models/request_dro_structural.rb
196
285
  - lib/cocina/models/request_file.rb
197
286
  - lib/cocina/models/request_file_set.rb
287
+ - lib/cocina/models/request_file_set_structural.rb
198
288
  - lib/cocina/models/sequence.rb
199
- - lib/cocina/models/types.rb
289
+ - lib/cocina/models/title.rb
290
+ - lib/cocina/models/validator.rb
200
291
  - lib/cocina/models/version.rb
201
292
  - lib/cocina/models/vocab.rb
293
+ - openapi.yml
202
294
  homepage: https://github.com/sul-dlss/cocina-models
203
295
  licenses: []
204
296
  metadata: {}
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cocina
4
- module Models
5
- # attributes common to both AdminPolicy and RequestAdminPolicy
6
- module AdminPolicyAttributes
7
- def self.included(obj)
8
- obj.attribute(:access, AdminPolicy::Access.default { AdminPolicy::Access.new })
9
- obj.attribute(:administrative, AdminPolicy::Administrative.default { AdminPolicy::Administrative.new })
10
- # TODO: Allowing description to be omittable for now (until rolled out to consumers),
11
- # but I think it's actually required for every admin policy
12
- obj.attribute :description, Description.optional.meta(omittable: true)
13
- obj.attribute(:identification, AdminPolicy::Identification.default { AdminPolicy::Identification.new })
14
- obj.attribute :label, Types::Strict::String
15
- obj.attribute(:structural, AdminPolicy::Structural.default { AdminPolicy::Structural.new })
16
- obj.attribute :type, Types::String.enum(*AdminPolicy::TYPES)
17
- obj.attribute :version, Types::Strict::Integer
18
- end
19
- end
20
- end
21
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cocina
4
- module Models
5
- # attributes common to both Collection and RequestCollection
6
- # See http://sul-dlss.github.io/cocina-models/maps/Collection.json
7
- module CollectionAttributes
8
- def self.included(obj)
9
- obj.attribute(:access, Collection::Access.default { Collection::Access.new })
10
- obj.attribute(:administrative, Collection::Administrative.default { Collection::Administrative.new })
11
- # TODO: Allowing description to be omittable for now (until rolled out to consumers),
12
- # but I think it's actually required for every Collection
13
- obj.attribute :description, Description.optional.meta(omittable: true)
14
- obj.attribute(:identification, Collection::Identification.default { Collection::Identification.new })
15
- obj.attribute :label, Types::Strict::String
16
- obj.attribute(:structural, Collection::Structural.default { Collection::Structural.new })
17
- obj.attribute :type, Types::String.enum(*Collection::TYPES)
18
- obj.attribute :version, Types::Strict::Integer
19
- end
20
- end
21
- end
22
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cocina
4
- module Models
5
- # attributes common to both DRO and RequestDRO
6
- # See http://sul-dlss.github.io/cocina-models/maps/DRO.json
7
- module DroAttributes
8
- def self.included(obj)
9
- obj.attribute(:access, DRO::Access.default { DRO::Access.new })
10
- obj.attribute(:administrative, DRO::Administrative.default { DRO::Administrative.new })
11
- # TODO: Allowing description to be omittable for now (until rolled out to consumers),
12
- # but I think it's actually required for every DRO
13
- obj.attribute :description, Description.optional.meta(omittable: true)
14
- obj.attribute :geographic, DRO::Geographic.optional.meta(omittable: true)
15
- obj.attribute(:identification, DRO::Identification.default { DRO::Identification.new })
16
- obj.attribute :label, Types::Strict::String
17
- obj.attribute :type, Types::String.enum(*DRO::TYPES)
18
- obj.attribute :version, Types::Strict::Integer
19
- end
20
- end
21
- end
22
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cocina
4
- module Models
5
- # attributes common to both File and RequestFile
6
- # See http://sul-dlss.github.io/cocina-models/maps/File.json
7
- module FileAttributes
8
- def self.included(obj)
9
- obj.attribute(:access, File::Access.optional.default { File::Access.new })
10
- obj.attribute(:administrative, File::Administrative.default { File::Administrative.new })
11
- obj.attribute :label, Types::Strict::String
12
- obj.attribute :filename, Types::String.optional.default(nil)
13
- obj.attribute :identification, File::Identification.optional.meta(omittable: true)
14
- obj.attribute :hasMessageDigests, Types::Strict::Array.of(File::Fixity).default([].freeze)
15
- obj.attribute :hasMimeType, Types::String.optional.meta(omittable: true)
16
- obj.attribute :presentation, File::Presentation.optional.meta(omittable: true)
17
- obj.attribute :size, Types::Strict::Integer.optional.default(nil)
18
- obj.attribute :structural, File::Structural.optional.meta(omittable: true)
19
- obj.attribute :type, Types::String.enum(*File::TYPES)
20
- obj.attribute :use, Types::String.enum('transcription').optional.meta(omittable: true)
21
- obj.attribute :version, Types::Strict::Integer
22
- end
23
- end
24
- end
25
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cocina
4
- module Models
5
- # attributes common to both FileSet and RequestFileSet
6
- # See http://sul-dlss.github.io/cocina-models/maps/Fileset.json
7
- module FileSetAttributes
8
- def self.included(obj)
9
- obj.attribute(:identification, FileSet::Identification.default { FileSet::Identification.new })
10
- obj.attribute :label, Types::Strict::String
11
- obj.attribute :type, Types::String.enum(*FileSet::TYPES)
12
- obj.attribute :version, Types::Strict::Integer
13
- end
14
- end
15
- end
16
- end
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cocina
4
- module Models
5
- # This defines the data types supported by the model
6
- module Types
7
- include Dry.Types()
8
- end
9
- end
10
- end