Drops.SQL.Compilers.Postgres (drops_relation v0.1.0)

View Source

PostgreSQL-specific compiler for processing database introspection ASTs.

This module implements the Drops.SQL.Compiler behavior to provide PostgreSQL-specific type mapping and AST processing. It converts PostgreSQL database types to Ecto types and handles PostgreSQL's rich type system including arrays, custom types, and advanced data types.

Summary

Functions

opts()

@spec opts() :: keyword()

process(node, opts)

@spec process(tuple(), map()) :: Drops.SQL.Database.Table.t() | term()

visit(arg)

visit(components, opts)

@spec visit(
  {:type, String.t()},
  map()
) :: atom() | tuple() | String.t()
@spec visit(
  {:type, {:enum, [String.t()]}},
  map()
) :: {:enum, [String.t()]}
@spec visit(
  {:default, nil},
  map()
) :: nil
@spec visit(
  {:default, String.t()},
  map()
) :: String.t()
@spec visit(
  {:default, String.t()},
  map()
) :: term()
@spec visit(
  {:table, list()},
  map()
) :: Drops.SQL.Database.Table.t()
@spec visit(
  {:identifier, String.t()},
  map()
) :: atom()
@spec visit(
  {:column, list()},
  map()
) :: Drops.SQL.Database.Column.t()
@spec visit(
  {:type, term()},
  map()
) :: term()
@spec visit(
  {:meta, map()},
  map()
) :: map()
@spec visit(
  {:index, list()},
  map()
) :: Drops.SQL.Database.Index.t()
@spec visit(
  {:foreign_key, list()},
  map()
) :: Drops.SQL.Database.ForeignKey.t()
@spec visit(list(), map()) :: list()
@spec visit(tuple(), map()) :: term()
@spec visit(term(), map()) :: term()