Sha256: 0ed5f2d604cf3ec712de406a0cfacc897baa1a5bc7e80417e59edf8604c0d85b

Contents?: true

Size: 900 Bytes

Versions: 3

Compression:

Stored size: 900 Bytes

Contents

require "logger"
require "bigdecimal"
require "date"
require "time"

require "bundler/setup"
require "zeitwerk"

loader = Zeitwerk::Loader.for_gem
loader.setup

module DataModel
	extend self

	# Scan a schema and create a data model, which is a configured type.
	# @param schema [Array] the schema to define
	# @param registry [Registry] the registry to use
	# @return [Model] the model built from the schema
	def define(schema, registry: Registry.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

	# Register a global type, which is available to all models.
	# @param name [Symbol] the name of the Type
	# @param type [Type] the type to register
	# @return [void]
	def register_global_type(name, type)
		Registry.register(name, type)
	end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
data_model-0.6.1 lib/data_model.rb
data_model-0.6.0 lib/data_model.rb
data_model-0.5.0 lib/data_model.rb