TL;DR
-
kysely-codegen
のsingularize
は、正規化後のテーブル名に対して適用されます。 -
model_caches
はmodelcaches
に正規化されてからルールが当たるため、
例外指定は"modelcaches": "model_cache"
のように書く必要があります。 - 広く当てたいなら正規表現
/caches$/ → cache
、ピンポイントなら/^modelcaches$/ → model_cache
。
事象
PostgreSQL テーブル名は model_caches
。
kysely-codegen
で camelCase: true
, --singularize
(または設定ファイルの singularize
)を使うと、
生成される型が Modelcach
(e
抜け問題)になってしまう。
// 例:生成結果
export interface Modelcach { // ← e が落ちている
// ...
}
そこで singularize
をこう書いたが効かない:
singularize: {
"model_caches": "model_cache" // 効かない
}
解決策
// .kysely-codegenrc.ts / .json
export default {
camelCase: true,
singularize: {
"modelcaches": "model_cache", // ← これが刺さる
},
};
原因
よくわからず、、
ソースコードを読んでみたがわからず。
ChatGPTに聞いてもそれらしい回答がなかった。
いろんなパターンを試していたらこれでマッチしたので、とりあえず解決した。