database/schema
The schema module defines the schema of a table. It is used to generate SQL queries and to decode the results of a query into a Gleam value.
Types
A field in a table. The name is used to generate SQL queries. Eventually would like to figure out a way to autogenerate the decoder based on these.
Right now only integer and string fields are supported but these could really be anything that can be represented in PGO.
pub type Field {
Field(name: String, type_: FieldType)
}
Constructors
-
Field(name: String, type_: FieldType)
The type of a field in a table. Not really used for anything yet.
pub type FieldType {
Integer
String
}
Constructors
-
Integer
-
String
The schema of a table. The table name, primary key, and fields are used to generate SQL queries. The decoder is used to decode the results of a query into a Gleam value.
Examples
pub type Note {
Note(id: Int, title: String, content: String)
}
pub fn schema() {
Schema(
table: "notes",
primary_key: "id",
fields: [
Field("id", schema.Integer),
Field("title", schema.String),
Field("content", schema.String),
],
decoder: dynamic.decode3(
Note,
dynamic.element(0, dynamic.int),
dynamic.element(1, dynamic.string),
dynamic.element(2, dynamic.string),
),
)
}
pub type Schema(a) {
Schema(
table: String,
primary_key: String,
fields: List(Field),
decoder: dynamic.Decoder(a),
)
}
Constructors
-
Schema( table: String, primary_key: String, fields: List(Field), decoder: dynamic.Decoder(a), )