sqlode/model

Types

pub type AnalyzedQuery {
  AnalyzedQuery(
    base: ParsedQuery,
    params: List(QueryParam),
    result_columns: List(ResultItem),
  )
}

Constructors

pub type Catalog {
  Catalog(tables: List(Table), enums: List(EnumDef))
}

Constructors

pub type Column {
  Column(name: String, scalar_type: ScalarType, nullable: Bool)
}

Constructors

  • Column(name: String, scalar_type: ScalarType, nullable: Bool)
pub type ColumnRename {
  ColumnRename(table: String, column: String, rename_to: String)
}

Constructors

  • ColumnRename(table: String, column: String, rename_to: String)
pub type Config {
  Config(version: Int, sql: List(SqlBlock))
}

Constructors

  • Config(version: Int, sql: List(SqlBlock))
pub type EmbeddedColumn {
  EmbeddedColumn(
    name: String,
    table_name: String,
    columns: List(Column),
  )
}

Constructors

  • EmbeddedColumn(
      name: String,
      table_name: String,
      columns: List(Column),
    )
pub type Engine {
  PostgreSQL
  MySQL
  SQLite
}

Constructors

  • PostgreSQL
  • MySQL
  • SQLite
pub type EnumDef {
  EnumDef(name: String, values: List(String))
}

Constructors

  • EnumDef(name: String, values: List(String))
pub type GleamOutput {
  GleamOutput(
    out: String,
    runtime: Runtime,
    type_mapping: TypeMapping,
    emit_sql_as_comment: Bool,
    emit_exact_table_names: Bool,
    omit_unused_models: Bool,
    vendor_runtime: Bool,
    strict_views: Bool,
  )
}

Constructors

  • GleamOutput(
      out: String,
      runtime: Runtime,
      type_mapping: TypeMapping,
      emit_sql_as_comment: Bool,
      emit_exact_table_names: Bool,
      omit_unused_models: Bool,
      vendor_runtime: Bool,
      strict_views: Bool,
    )

    Arguments

    omit_unused_models

    When True, the generated models.gleam includes only tables and enums that are referenced by at least one generated query (directly via source_table, embed, or via enum types on used tables / query columns / query params). Defaults to False to preserve the existing full-catalog output.

    vendor_runtime

    When True, emit a copy of sqlode/runtime into the output directory as runtime.gleam and rewrite the generated module imports to point at the local copy. The target project no longer needs sqlode as a runtime dependency. Defaults to False so the shared-runtime path stays the default.

    strict_views

    When True, any schema warning from view resolution (unresolvable view columns, dropped views) is promoted to a fatal error. Defaults to False — the legacy behaviour is to print warnings to stderr and drop columns/views silently so generation can still produce models for the rest of the catalog. Strict-by-default is planned for a future release.

pub type Macro {
  MacroArg(index: Int, name: String)
  MacroNarg(index: Int, name: String)
  MacroSlice(index: Int, name: String)
}

Constructors

  • MacroArg(index: Int, name: String)
  • MacroNarg(index: Int, name: String)
  • MacroSlice(index: Int, name: String)
pub type Overrides {
  Overrides(
    type_overrides: List(TypeOverride),
    column_renames: List(ColumnRename),
  )
}

Constructors

pub type ParsedQuery {
  ParsedQuery(
    name: String,
    function_name: String,
    command: runtime.QueryCommand,
    sql: String,
    source_path: String,
    param_count: Int,
    macros: List(Macro),
  )
}

Constructors

  • ParsedQuery(
      name: String,
      function_name: String,
      command: runtime.QueryCommand,
      sql: String,
      source_path: String,
      param_count: Int,
      macros: List(Macro),
    )
pub type QueryParam {
  QueryParam(
    index: Int,
    field_name: String,
    scalar_type: ScalarType,
    nullable: Bool,
    is_list: Bool,
  )
}

Constructors

  • QueryParam(
      index: Int,
      field_name: String,
      scalar_type: ScalarType,
      nullable: Bool,
      is_list: Bool,
    )
pub type ResultColumn {
  ResultColumn(
    name: String,
    scalar_type: ScalarType,
    nullable: Bool,
    source_table: option.Option(String),
  )
}

Constructors

pub type ResultItem {
  ScalarResult(ResultColumn)
  EmbeddedResult(EmbeddedColumn)
}

Constructors

pub type Runtime {
  Raw
  Native
}

Constructors

  • Raw
  • Native
pub type ScalarType {
  IntType
  FloatType
  BoolType
  StringType
  BytesType
  DateTimeType
  DateType
  TimeType
  UuidType
  JsonType
  EnumType(name: String)
  CustomType(
    name: String,
    module: option.Option(String),
    underlying: ScalarType,
  )
  ArrayType(element: ScalarType)
}

Constructors

  • IntType
  • FloatType
  • BoolType
  • StringType
  • BytesType
  • DateTimeType
  • DateType
  • TimeType
  • UuidType
  • JsonType
  • EnumType(name: String)
  • CustomType(
      name: String,
      module: option.Option(String),
      underlying: ScalarType,
    )
  • ArrayType(element: ScalarType)
pub type SqlBlock {
  SqlBlock(
    name: option.Option(String),
    engine: Engine,
    schema: List(String),
    queries: List(String),
    gleam: GleamOutput,
    overrides: Overrides,
  )
}

Constructors

pub type Table {
  Table(name: String, columns: List(Column))
}

Constructors

  • Table(name: String, columns: List(Column))
pub type TypeMapping {
  StringMapping
  RichMapping
  StrongMapping
}

Constructors

  • StringMapping
  • RichMapping
  • StrongMapping
pub type TypeOverride {
  DbTypeOverride(
    db_type: String,
    gleam_type: String,
    nullable: option.Option(Bool),
  )
  ColumnOverride(
    table: String,
    column: String,
    gleam_type: String,
  )
}

Constructors

  • DbTypeOverride(
      db_type: String,
      gleam_type: String,
      nullable: option.Option(Bool),
    )
  • ColumnOverride(table: String, column: String, gleam_type: String)

Values

pub fn empty_overrides() -> Overrides
pub fn engine_to_string(engine: Engine) -> String
pub fn is_result_command(command: runtime.QueryCommand) -> Bool
pub fn parse_engine(value: String) -> Result(Engine, String)
pub fn parse_query_command(
  value: String,
) -> Result(runtime.QueryCommand, String)
pub fn parse_runtime(value: String) -> Result(Runtime, String)
pub fn parse_sql_type(
  type_text: String,
) -> Result(ScalarType, Nil)

Parse a SQL type name into a ScalarType by normalizing the type token (lowercasing, stripping modifiers and array markers, collapsing whitespace) and matching the base name against a fixed table of built-ins.

Used by both schema parsing (CREATE TABLE column types) and query analysis (PostgreSQL type casts like $1::int). Returns Error(Nil) for unrecognized types so callers can surface the original text in a precise diagnostic instead of guessing.

pub fn parse_type_mapping(
  value: String,
) -> Result(TypeMapping, String)
pub fn query_command_to_string(
  command: runtime.QueryCommand,
) -> String
pub fn runtime_to_string(runtime: Runtime) -> String
pub fn type_mapping_to_string(mapping: TypeMapping) -> String
Search Document