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に聞いてもそれらしい回答がなかった。
いろんなパターンを試していたらこれでマッチしたので、とりあえず解決した。