March Docs

Depot.Schema

Depot.Schema: typed schema definitions for database tables.

A schema is a plain March value produced by Depot.Schema.define/2. It captures the table name, field types/options, associations, and primary key. Schemas drive Gate v2, Repo, Query, and Migration.

Usage:

fn schema() do Depot.Schema.define("users", { fields = { name = "String", email = "String", age = ("Int", { default = 0 }), role = ("String", { default = "user" }) } }) end

let s = schema() Depot.Schema.table(s) -- => "users" Depot.Schema.field_names(s) -- => ["name", "email", "age", "role"] Depot.Schema.blank(s) -- => { name = "", email = "", age = 0, role = "user" }

Types

typeSchemaSchema = Schema(String, List((String, (String, List((String, String))))), List((String, String, String, List((String, String)))), String)#

Functions

fndefinedefine(table, spec)#
fntabletable(schema)#
fnfieldsfields(schema)#
fnfield_namesfield_names(schema)#
fnfield_typefield_type(schema, name)#
fnfield_optsfield_opts(schema, name)#
fnprimary_keyprimary_key(schema)#
fnis_virtualis_virtual(schema, field_name)#
fnassociationsassociations(schema)#
fnassociationassociation(schema, name)#
fndb_fieldsdb_fields(schema)#
fnblankblank(schema)#