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),
    )
Search Document