module Mimi::DB::Dictate::TypeDefaults
Constants
- DEF_OPT_SIZE_PROC
Constructs a Proc that returns “<type>” or “<type>(n)” depending on whether the size is provided
- TYPE_DECIMAL_PROC
Produces a “decimal”, “decimal(p)” or “decimal(p,s)” depending on whether size is provided
- TYPE_INTEGER_PROC
Produces an “integer” or “integer(n)” depending on whether size is provided
- TYPE_MAP
Type converters, accept
Sequel
type (field as: …) as a key, return:-
a Hash of field params or
-
a Proc returning a Hash of field params
-
- TYPE_POSTGRES_NUMERIC_PROC
Produces a “numeric” or “numeric(p, s)” depending on whether size is provided
- TYPE_POSTGRES_VARCHAR_PROC
Produces a “character varying” or “character varying(n)” depending on whether the size is provided
- TYPE_SQLITE_DECIMAL_PROC
Produces a “decimal”, “decimal(p)” or “decimal(p, s)” depending on whether size is provided
- TYPE_STRING_PROC
Produces a “string” or “string(n)” depending on whether the size is provided
Public Class Methods
The method infers column params based on column definition
@param params [Hash] @return [Hash]
# File lib/mimi/db/dictate/type_defaults.rb, line 149 def self.infer_params(params) type = params[:type].to_sym defaults = { db_type: type.to_s, sequel_type: type, primary_key: !!params[:primary_key], not_null: !!params[:primary_key], db_default: params[:default] } adapter_name = Mimi::DB.sequel_config[:adapter] raise "Failed to infer_params, adapter is not set: #{adapter_name}" unless adapter_name inferred_params = TYPE_MAP[adapter_name.to_sym][type] || TYPE_MAP[:default][type] || {} inferred_params = inferred_params.call(params) if inferred_params.is_a?(Proc) defaults.merge(inferred_params).merge(params) end