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
-
Miss(class: stop.Class, text: String)
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。