メインコンテンツまでスキップ

map / mapSheets(@map / @@map)

Prisma の @map("name")(フィールドレベル)と @@map("name")(モデルレベル)に相当する機能です。コード上の名前とスプレッドシート上の名前をマッピングします。

map(フィールドレベル)

コード上のフィールド名とスプレッドシートのヘッダー名を異なる名前でマッピングします。

const gassma = new Gassma.GassmaClient({
map: {
Users: {
firstName: "名前",
lastName: "名字",
},
},
});

// コード上は英語名で操作
gassma.Users.create({
data: { firstName: "Alice", lastName: "Smith" },
});
// → スプレッドシートの「名前」「名字」カラムに書き込まれる

gassma.Users.findFirst({
where: { firstName: "Alice" },
});
// => \{ firstName: "Alice", lastName: "Smith" \}

変換が適用される箇所

  • 書き込みデータ: create / createMany / update / updateMany / upsert でコード名→ヘッダー名に変換
  • 読み取り結果: find / create / update / upsert の返り値でヘッダー名→コード名に変換
  • where 条件: コード名→ヘッダー名に変換してからフィルタ

mapSheets(モデルレベル)

コード上のモデル名とスプレッドシートのシート名をマッピングします。

const gassma = new Gassma.GassmaClient({
mapSheets: {
Users: "ユーザー一覧",
Posts: "投稿データ",
},
});

// コード上は英語名でアクセス
gassma.Users.findMany({});
// → 内部ではシート名「ユーザー一覧」に対して操作

他オプションとの組み合わせ

mapSheets を指定した場合、他のオプション(omitdefaultsupdatedAtignoremap 等)にはコード名を使用します。

const gassma = new Gassma.GassmaClient({
mapSheets: {
Users: "ユーザー一覧",
},
defaults: {
Users: { role: "USER" }, // ← "ユーザー一覧" ではなく "Users"
},
});