yumemi/gen/emit/codec

back の codec(WGy、0.11.1)── src/gen/codec.mjs。行(Postgres の JSON)と Gleam の値の間の写しを、 Entity と値型の宣言から書く。共通の口(checked・parse・option・encode・phase …)は framework の yumemi/server/codec.mjs が持ち、生成物は表(scalar・整数の値型)と Entity ごとの decoder だけを持つ。

導く規則(Property の型ごと、列は reader の FieldDef と同じ):

型写し
値型(gen/types/*)parse('<名>', v)(整数の値型は Number(v)、文字列は String(v))
PartyId / Blob / Color / Secretchecked(party.parse(v)) / checked(blob.parse(String(v))) / checked(color.parse(String(v))) / secret.hmac(String(v))
Datetime / Date / TimecDatetime(v) / cDate(v) / cTime(v)
Int / Float / Bool / StringNumber(v) / Number(v) / Boolean(v) / String(v)
Held(E) / Has(E) / Link(E)er.held_from_row({key:r.<prop>_id}) / er.from_row(..) / option(r.<prop>_id, v=>er.key(String(v)))
構成子だけの sumphase(<module>, v)
payload を持つ sum<型>.decode<型>(r)(src/gen/<型>.mjs)
欄を持つ record(1 構成子)new <module>.<型>(<欄ごとに同じ規則>)(jsonb の object)
Option(T) / List(T)option(v, ..) / list(v, ..)

宣言から導けない decoder(列の形が宣言と違う、ER の外の集計など)は、server.hooks に decode_<名> の hook を宣言すると、生成物がその ★ を名指しで re-export する(導いた decoder より hook が勝つ)。 規則で導けない Property を持つ Entity は decoder を出さず、file の頭に名指しする。

Values

pub fn text(
  app: model.App,
  units: List(source.Unit),
  input: String,
) -> String
✨ Search Document