| title | 値なしの表し方(nullable) | |||
|---|---|---|---|---|
| status | current | |||
| area | conventions | |||
| related |
|
|||
| proto |
|
|||
| updated | 2026-10-18 |
| 経路 | nullable | 「値なし」の表し方 |
|---|---|---|
gRPC(.proto。クライアント向け・内部 API) |
スカラーは optional を使わない |
取り決めた番兵値(空文字など)。メッセージ型のフィールドは null を「変更なし / 該当なし」として使ってよい |
| DB | NULL を許す列はなるべく作らない |
行が無いこと |
| MagicOnion(MessagePack。Client ⇔ BattleServer) | 使ってよい |
- パーティの未編成の枠は
player_party_slotsに行を作らない - マッチングが成立していないときの
GetQueueStatusのmatch_id・battle_server・battle_tokenは空文字 (マッチング) - 勝者なしの対戦の結果報告の
winner_id、一度も参加しなかった側のplayer1_id/player2_idは空文字(内部API) player_diffの種別ごとのフィールドは、変化が無ければnull(所持データの差分)- マスタでは、2つ目のタイプが無いパチモンの
secondary_typeをNONE、変化技のbase_powerを0にする (マスターデータのパイプラインが nullable を持てないため) - 状態によって中身が決まる列だけ、例外として DB で
NULLを許す(scout_rollsのselected_index・selected_at、battle_matchesの選出・勝者・日時)
- gRPC は基盤(VolTech gRPC)の規約に合わせた
- 「無い」を行が無いことで表すと、API に nullable を出さずに済み、割当を独立したテーブルにする設計(DB)とも合う