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
-
Column( name: String, data_type: model.ColumnType, nullable: Bool, default: option.Option(String), primary_key: Bool, unique: Bool, )
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
-
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)
pub type Model {
Model(
table: relation.TableRef,
columns: List(Column),
identity_columns: option.Option(List(String)),
relations: List(RelationDefinition),
)
}
Constructors
-
Model( table: relation.TableRef, columns: List(Column), identity_columns: option.Option(List(String)), relations: List(RelationDefinition), )
pub type RelationDefinition {
RelationDefinition(
name: String,
foreign_key_name: String,
kind: RelationKind,
related_table: relation.TableRef,
column_pairs: List(relation.ColumnPair),
)
}
Constructors
-
RelationDefinition( name: String, foreign_key_name: String, kind: RelationKind, related_table: relation.TableRef, column_pairs: List(relation.ColumnPair), )
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 custom_with(
name: String,
next_type: codec.CustomCodec(a),
) -> 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 model_(
schema_name: String,
table_name: String,
columns: List(Column),
relations: List(RelationDefinition),
) -> Model
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 time_of_day(name: String) -> Column
pub fn timestamptz(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 varchar(
name: String,
length: option.Option(Int),
) -> Column