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 は組の代入にする。 表の schema(InSchema)を Entity に写す。

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

Derived の Property の名(表の列に持たない)。無ければ空。

pub fn derived_field(
  app: model.App,
  field: model.FieldDef,
) -> Bool

列 1 本が Derived の Property のものか。

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 read_from(
  app: model.App,
  entity: model.Entity,
) -> option.Option(String)

ReadFrom の relation の名(schema なし)。無ければ None。

pub fn read_table(app: model.App, entity: model.Entity) -> String

生成の読みが引く relation を schema つきで。ReadFrom があれば <schema>.<relation>(app.store_view)、 無ければ表(table)。verb は表を書くので、これを使うのは読みだけ。

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 table(entity: model.Entity) -> String

表の名を schema つきで(app.article、InSchema があれば public.course)。

pub fn tabled(app: model.App) -> model.App

表の列だけの App ── Derived の Property と列を Entity から外す。verb と Draft・Created はこれで書く (create・update の列と値、RETURNING、Draft・Created に Derived を出さない)。 Derived の宣言が無ければ App をそのまま返す。

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

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

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

生成の読みが引けない Derived の Property の名 ── 読みが表を引く Entity の Derived。 ReadFrom のある Entity は relation が列で渡すので空。

pub fn unread_field(
  app: model.App,
  field: model.FieldDef,
) -> Bool

列 1 本が、生成の読みが引けない Derived の Property のものか(unread の列版)。

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

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

✨ Search Document