@dandi/model-builder
v1.0.0-alpha.77
Published
The `@dandi/model-builder` package contains utilities for dynamically constructing and validating models defined using decorators from `@dandi/model`.
Downloads
44
Readme
@dandi/model-builder
The @dandi/model-builder
package contains utilities for dynamically
constructing and validating models defined using decorators from
@dandi/model
.
While ModelBuilder
can be used on its own, is used by several other
Dandi packages to provide automatic construction and validation of
data models:
@dandi/mvc
- data binding and validation by@RequestBody()
,@PathParam()
, and@QueryParam()
@dandi/data
- validates integrity of database connection configuration@dandi-contrib/data-pg
- converts data from their database representations to their defined models when usingqueryModel
andqueryModelSingle
@dandi-contrib/aws-lambda
- converts incoming AWS event data to Dandi models
ModelBuilder
The ModelBuilder
interface exposes two methods for working with models.
constructModel
is used for converting a POJO ("Plain Old JavaScript
Object") into an instance of a desired model class. constructMember
is
used to convert individual values to a specified type.
ModelBuilderOptions
Providing options to constructModel
or constructMember
calls will
allow you to configure validation, transform the keys of your source
object, or for constructModel
, transform the source object itself
before construction.
validators
: An array ofModelValidator
instances that will be used to validate the constructed model.keyTransform
: AKeyTransformFn
that will be used to modify the keys of the source object when mapping properties to the constructed model. This is useful when dealing with external data sources that provide data is in one case (e.g.snake_case
), and your models are written in another (hopefully,camelCase
).dataTransformers
: An array ofDataTransformer
instances that will modify the source object before starting construction of the model. This can be used to do just about anything, but as an example, it can be used with@dandi-contrib/data-pg
andNestedKeyTransformer
to convert a flat POJO with dot notated keys to a complex object with nested properties.
MetadataModelBuilder
MetadataModelBuilder
is the default implementation of ModelBuilder
and is included in the @dandi/model-builder
package.
MetadataModelBuilder
uses the metadata generated by using decorators
from @dandi/model
to define a model. Some things to note about using
MetadataModelBuilder
:
- Nested models are supported - it will recurse into each complex type
and convert any properties defined by the
@dandi/model
decorators. - When using the
keyTransform
option, it will not transform the keys ofMap
properties (defined with@MapOf()
), or JSON properties (specified by adding@Json()
).