yumemi/gen/storage

server.storage の写像(WGy r3、鷹野の裁定)── Entity の器(Neon / Durable Object)と、 導出と違う列の持ち方。穴の契約(Property 1 つに穴 1 つ、値は codec の encode)は変えず、 割る・写すのは SQL の側でする。

Values

pub fn apply(
  entities: List(model.Entity),
  rows: List(model.Storage),
) -> List(model.Entity)

列名の上書き(Column)と、record を割る列(Split)を FieldDef の列に写す。 割った列は a,b の 1 つの綴りで持ち、INSERT / RETURNING はそのまま並び、UPDATE は組の代入にする。

pub fn in_object(app: model.App, module: String) -> Bool

Entity が Durable Object の器に在るか(PG の SQL を出さない)。

pub fn in_object_named(app: model.App, name: String) -> Bool

Entity の名(Notification)で引く in_object。

pub fn split_columns(
  app: model.App,
  entity: model.Entity,
  property: String,
) -> List(#(String, String))

Split の宣言の (record の欄, 列)。無ければ空。

pub fn sql_type(
  app: model.App,
  field: model.FieldDef,
) -> option.Option(String)

列の SQL の型の上書き(Text は text、Array は <element>[])。

pub fn text_values(
  app: model.App,
  entity: model.Entity,
  property: String,
) -> List(#(String, String))

Text の宣言の (構成子, 列の値)。無ければ空。

pub fn values(
  app: model.App,
  field: model.FieldDef,
  placeholder: String,
) -> option.Option(List(String))

穴 1 つから列の値を書く(Split は列の数だけ、Text は構成子の snake 名を列の値へ)。

✨ Search Document