galchemy/orm/declarative

Types

pub type Column {
  Column(
    name: String,
    data_type: model.ColumnType,
    nullable: Bool,
    default: option.Option(String),
    primary_key: Bool,
    unique: Bool,
  )
}

Constructors

pub type DeclarativeError {
  DuplicateColumn(table: relation.TableRef, column: String)
  DuplicateRelation(
    table: relation.TableRef,
    relation_name: String,
  )
  MissingIdentity(table: relation.TableRef)
  UnknownIdentityColumn(table: relation.TableRef, column: String)
  UnknownLocalColumn(table: relation.TableRef, column: String)
}

Constructors

pub type Model {
  Model(
    table: relation.TableRef,
    columns: List(Column),
    identity_columns: option.Option(List(String)),
    relations: List(RelationDefinition),
  )
}

Constructors

pub type RelationDefinition {
  RelationDefinition(
    name: String,
    foreign_key_name: String,
    kind: RelationKind,
    related_table: relation.TableRef,
    column_pairs: List(relation.ColumnPair),
  )
}

Constructors

pub type RelationKind {
  BelongsTo
  HasMany
}

Constructors

  • BelongsTo
  • HasMany

Values

pub fn array(name: String, item_type: model.ColumnType) -> Column
pub fn belongs_to(
  name: String,
  foreign_key_name: String,
  related_schema: String,
  related_table: String,
  column_pairs: List(relation.ColumnPair),
) -> RelationDefinition
pub fn big_int(name: String) -> Column
pub fn bool(name: String) -> Column
pub fn bytea(name: String) -> Column
pub fn custom(name: String, type_name: String) -> Column
pub fn custom_with(
  name: String,
  next_type: codec.CustomCodec(a),
) -> Column
pub fn date(name: String) -> Column
pub fn default(next_column: Column, sql: String) -> Column
pub fn float(name: String) -> Column
pub fn has_many(
  name: String,
  foreign_key_name: String,
  related_schema: String,
  related_table: String,
  column_pairs: List(relation.ColumnPair),
) -> RelationDefinition
pub fn identity(
  next_model: Model,
  columns: List(String),
) -> Model
pub fn int(name: String) -> Column
pub fn json(name: String) -> Column
pub fn jsonb(name: String) -> Column
pub fn model_(
  schema_name: String,
  table_name: String,
  columns: List(Column),
  relations: List(RelationDefinition),
) -> Model
pub fn nullable(next_column: Column) -> Column
pub fn numeric(
  name: String,
  precision: option.Option(Int),
  scale: option.Option(Int),
) -> Column
pub fn pair(
  local_column: String,
  related_column: String,
) -> relation.ColumnPair
pub fn primary_key(next_column: Column) -> Column
pub fn real(name: String) -> Column
pub fn small_int(name: String) -> Column
pub fn text(name: String) -> Column
pub fn time_of_day(name: String) -> Column
pub fn timestamp(name: String) -> Column
pub fn timestamptz(name: String) -> Column
pub fn timetz(name: String) -> Column
pub fn to_metadata(
  next_model: Model,
) -> Result(metadata.ModelMetadata, DeclarativeError)
pub fn to_snapshot(
  models: List(Model),
) -> Result(model.SchemaSnapshot, DeclarativeError)
pub fn to_table_schema(
  next_model: Model,
) -> Result(model.TableSchema, DeclarativeError)
pub fn unique(next_column: Column) -> Column
pub fn uuid(name: String) -> Column
pub fn varchar(
  name: String,
  length: option.Option(Int),
) -> Column
Search Document