Sha256: 37205b9633df8706f21397b98a2346cf90f775fe92bd8eb0331c46def86c12ab
Contents?: true
Size: 1.02 KB
Versions: 2
Compression:
Stored size: 1.02 KB
Contents
# typed: strict require "logger" require "bigdecimal" require "date" require "time" require "bundler/setup" require "zeitwerk" require "sorbet-runtime" loader = T.let(Zeitwerk::Loader.for_gem, Zeitwerk::Loader) loader.setup module DataModel extend T::Sig extend self TSchema = T.type_alias { T::Array[Object] } TData = T.type_alias { Object } # an error is a tuple of [error_type, error_context], where context # provides additional information about the error TError = T.type_alias { [Symbol, Object] } # a map of symbol => type, suitable for sending to a TypeRegistry TTypeMap = T.type_alias { T::Hash[Symbol, T.class_of(Type)] } # Scan a schema and create a data model, which is a configured type. sig { params(schema: TSchema, registry: TypeRegistry).returns(Model) } def define(schema, registry: TypeRegistry.instance) scanned = Scanner.scan(schema, registry) type = registry.type( scanned.type, args: scanned.args, params: scanned.params, ) model = Model.new(schema, type) return model end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
data_model-0.2.0 | lib/data_model.rb |
data_model-0.1.0 | lib/data_model.rb |