Cocina::Models
This is a Ruby implementation of the SDR data model (named "COCINA"). The data being modeled includes digital repository objects.
Validation is performed by openapi (using OpenAPIParser). Modeling is provided by dry-struct and dry-types. Together, these provide a way for consumers to validate objects against models and to manipulate thos objects.
This is a work in progress that will ultimately implement the full COCINA data model. See also architecture documentation.
Generate models from openapi.yml
Note that only a small subset of openapi is supported. If you are using a new openapi feature or pattern, verify that the model will be generated as expected.
All
exe/generator generate
Single model
exe/generator generate_schema DRO
Testing
The generator is tested via its output when run against openapi.yml
, viz., the Cocina model classes. Thus, generate
should be run after any changes to openapi.yml
.
Beyond what is necessary to test the generator, the Cocina model classes are not tested, i.e., they are assumed to be as specified in openapi.yml
.
Releasing
The release process is much like any other gem. First bump the version in lib/cocina/models/version.rb
, and commit the result. Then run:
bundle exec rake release
which pushes the gem to rubygems.org. Next write up the release notes: https://github.com/sul-dlss/cocina-models/releases .
Finally, you must release versions of sdr-client and dor-services-client pinned to this version because Argo depends on both of those. When dor-services-app is updated to use the new models (via the auto-update script), the clients must be updated at the same time or there is risk of models produced by dor-services-app not being acceptable to the clients.
Dependent Services
Once the above listed gems are updated all the following services that use cocina-models should be updated and released at the same time:
- sul-dlss/sdr-api
- sul-dlss/dor-services-app
- sul-dlss/google-books
- sul-dlss/common-accessioning
- sul-dlss/argo
- sul-dlss/pre-assembly
- sul-dlss/hydrus
- sul-dlss/happy-heron
- sul-dlss/infrastructure-integration-test
Using this gem
If you are using this gem in an application that has an API that accepts Cocina models (e.g., SDR API, Dor-Services-App), make sure that the openapi.yml
for the application includes the schemas that match the schemas in this openapi.yml
.
This can be accomplished by cutting and pasting these schemas. By convention, these schemas are listed first in the openapi.yml
of the associated projects, followed by the application-specific schemas.