Appearance
Documentation / @kizami/db / getClosingSnapshots
Function: getClosingSnapshots()
getClosingSnapshots(
db,params):Promise<object[]>
Defined in: packages/db/src/queries/closings.ts:234
(tenantId, period) の「現在のスナップショット」を全ユーザー分返す。period が一度も 締められていなければ空配列。reopen 後で現在は open でも、直近の close/amend 時点の スナップショットは残っているためそのまま返す(呼び出し側は getClosingState の status を見て 「closed のときだけ呼ぶ」運用を想定 — apps/api/src/routes/attendance.ts・exports.ts 参照)。
判断点(amend 対応): 締め後修正(amend)は影響を受けたユーザーの行だけを新しい closing_event_id に追加する設計(schema/closings.ts 判断点コメント参照)であり、 「1つの closing_event_id に紐づく行の集合 = その period 全員分の現在値」という単純な前提が もう成り立たない。そのためここでは close/amend イベントを時系列で辿り、ユーザーごとに 「そのユーザーの行を含む最も新しいイベント」を特定し、そのイベントに紐づく行だけを採用する (amend されていないユーザーは元の close のイベントの行がそのまま採用される)。
Database | Transaction を受け取る(承認処理(corrections.ts・leave.ts)が amend の 反映と同一トランザクションで「反映前の値」を読むために必要)。
Parameters
db
Database | SQLiteTransaction<"async", ResultSet, schema, ExtractTablesWithRelations<schema>>
params
period
string
tenantId
string
Returns
Promise<object[]>