feat(db): stock CHECK constraints + audit_logs DATETIME (2038 fix)
Migration 20260612234500: CHECK (quantity >= 0) on sklad_batches and sklad_item_locations — the DB itself now rejects negative stock, so a future C2-class bug (cumulative decrements driving a batch negative and silently vanishing from totals) becomes a loud error instead of hidden corruption. All three databases verified clean of negative rows before the migration. audit_logs.created_at TIMESTAMP(0) -> DATETIME(0): TIMESTAMP dies in 2038 and converts through the session timezone; existing wall times preserved by the MODIFY. Pinned by db-constraints.test.ts (4 tests, each watched fail pre-migration: negative insert/update/location all succeeded before, 2098 audit timestamp was rejected before). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -65,7 +65,9 @@ model audit_logs {
|
||||
new_values String? @db.LongText
|
||||
user_agent String? @db.Text
|
||||
session_id String? @db.VarChar(128)
|
||||
created_at DateTime? @default(now()) @db.Timestamp(0)
|
||||
// DATETIME, not TIMESTAMP — TIMESTAMP dies in 2038 and converts through
|
||||
// the session timezone (2026-06-12 hardening migration).
|
||||
created_at DateTime? @default(now()) @db.DateTime(0)
|
||||
|
||||
@@index([action], map: "idx_audit_logs_action")
|
||||
@@index([created_at], map: "idx_audit_logs_created")
|
||||
|
||||
Reference in New Issue
Block a user