yumemi/gen/relation

join: / with: の項を矢印へ解く規則。SQL 層(emit/sql)と型の層(emit/typing・ gen/query.gleam の Arrow)は同じ関数で解く ── 片方だけ出る形を作らないため。

with: の逆向きの名は <親>To<子の短い名の複数形>(RosterToPhotos = RosterPhoto の roster の逆、LinkImportToCandidates = LinkImportCandidate の link_import の逆)。 子の名が親の名で始まればその分を落として短い名にする。名が合わなければ解かない。

Types

解けなかった理由。class は 20 の exit code 表へそのまま写る。

pub type Miss {
  Miss(class: stop.Class, text: String)
}

Constructors

Values

pub fn join_arrow(
  app: model.App,
  name: String,
) -> Result(model.Arrow, Miss)

join: の項。順向きの矢印で、先が 1 行に決まるもの(Multi は中間表に居て列が無い)。

pub fn name_matches(
  name: String,
  from: model.Entity,
  child: model.Entity,
) -> Bool

逆向きの名の規則。from の名で始まる子はその分を落とし、複数形にして比べる。

pub fn reverse_arrows(
  entities: List(model.Entity),
  arrows: List(model.Arrow),
  services: List(model.Service),
) -> List(model.Arrow)

with: に書かれ、解けた逆向きの矢印。gen/query.gleam の Arrow に出す。 親の Entity の並び、同じ親の中は名の順。

pub fn with_arrow(
  entities: List(model.Entity),
  arrows: List(model.Arrow),
  from: model.Entity,
  name: String,
) -> Result(model.Arrow, Miss)

with: の項。from を親とする Held の逆向きに解き、逆向きの矢印(親 -> 子)を返す。

pub fn with_output(from: model.Entity, name: String) -> String

行の欄の名(SQL の AS と、型の層の組の位置の説明に使う)。RosterToPhotos -> photos。

✨ Search Document