Files
Dune/drizzle/meta/0010_snapshot.json
Quintine e7d4efc3db Add configured room creation to administration
Create an explicitly owned new host seat with supported rules/modules and ordered AI seats through one live-authorized transaction. Save exact account-bound retries across refresh, record durable audit metadata, and never restore a revoked or transferred host credential. Connect invitation joining and ordinary voluntary host handover. Preserve normal readiness and Advanced preview gates.

Verified types, lint, 5240 offline tests, 52 HTTP tests and build. Eight authenticated HTTP groups and independent privacy/persistence review passed. Browser QA confirmed one room after a lost response and refresh/retry, working host controls and saved continuation. Mobile layout passed; requested desktop viewport override did not take effect. Existing games preserved. Authenticated deployed administrator acceptance remains pending explicit QA access.
2026-09-22 11:03:12 +10:00

1243 lines
32 KiB
JSON

{
"version": "6",
"dialect": "sqlite",
"id": "05bc871d-07db-45ed-9501-8d65bbce33c6",
"prevId": "4e2806dd-1d29-4921-b818-b4f882ba9d73",
"tables": {
"admin_accounts": {
"name": "admin_accounts",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"name": {
"name": "name",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"role": {
"name": "role",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"key_hash": {
"name": "key_hash",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"enabled": {
"name": "enabled",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 1
},
"session_generation": {
"name": "session_generation",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 0
},
"created_at": {
"name": "created_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"updated_at": {
"name": "updated_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {
"admin_accounts_key_hash_unique": {
"name": "admin_accounts_key_hash_unique",
"columns": [
"key_hash"
],
"isUnique": true
}
},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {
"admin_accounts_role": {
"name": "admin_accounts_role",
"value": "\"admin_accounts\".\"role\" IN ('owner', 'operator', 'viewer')"
},
"admin_accounts_enabled": {
"name": "admin_accounts_enabled",
"value": "\"admin_accounts\".\"enabled\" IN (0, 1)"
},
"admin_accounts_generation": {
"name": "admin_accounts_generation",
"value": "\"admin_accounts\".\"session_generation\" >= 0"
}
}
},
"admin_audit": {
"name": "admin_audit",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"actor_admin_id": {
"name": "actor_admin_id",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"target_admin_id": {
"name": "target_admin_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"action": {
"name": "action",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"detail": {
"name": "detail",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "'{}'"
}
},
"indexes": {
"admin_audit_created_at": {
"name": "admin_audit_created_at",
"columns": [
"created_at"
],
"isUnique": false
}
},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"admin_room_audit": {
"name": "admin_room_audit",
"columns": {
"operation_id": {
"name": "operation_id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"actor_admin_id": {
"name": "actor_admin_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"room_code": {
"name": "room_code",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"action": {
"name": "action",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "'room_control'"
},
"reason": {
"name": "reason",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expected_revision": {
"name": "expected_revision",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"before_paused": {
"name": "before_paused",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"before_join_locked": {
"name": "before_join_locked",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"after_paused": {
"name": "after_paused",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"after_join_locked": {
"name": "after_join_locked",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {
"admin_room_audit_room": {
"name": "admin_room_audit_room",
"columns": [
"room_code",
"created_at"
],
"isUnique": false
}
},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"admin_room_creations": {
"name": "admin_room_creations",
"columns": {
"operation_id": {
"name": "operation_id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"actor_admin_id": {
"name": "actor_admin_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"room_code": {
"name": "room_code",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"host_id": {
"name": "host_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"request_hash": {
"name": "request_hash",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"session_hash": {
"name": "session_hash",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"configuration": {
"name": "configuration",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"reason": {
"name": "reason",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {
"admin_room_creations_session_hash_unique": {
"name": "admin_room_creations_session_hash_unique",
"columns": [
"session_hash"
],
"isUnique": true
},
"admin_room_creations_room": {
"name": "admin_room_creations_room",
"columns": [
"room_code",
"created_at"
],
"isUnique": false
}
},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"admin_sessions": {
"name": "admin_sessions",
"columns": {
"token_hash": {
"name": "token_hash",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"id": {
"name": "id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"admin_id": {
"name": "admin_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"generation": {
"name": "generation",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"revoked_at": {
"name": "revoked_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
}
},
"indexes": {
"admin_sessions_id_unique": {
"name": "admin_sessions_id_unique",
"columns": [
"id"
],
"isUnique": true
},
"admin_sessions_account": {
"name": "admin_sessions_account",
"columns": [
"admin_id"
],
"isUnique": false
}
},
"foreignKeys": {
"admin_sessions_admin_id_admin_accounts_id_fk": {
"name": "admin_sessions_admin_id_admin_accounts_id_fk",
"tableFrom": "admin_sessions",
"tableTo": "admin_accounts",
"columnsFrom": [
"admin_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"room_controls": {
"name": "room_controls",
"columns": {
"room_code": {
"name": "room_code",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"paused": {
"name": "paused",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 0
},
"join_locked": {
"name": "join_locked",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 0
},
"revision": {
"name": "revision",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 0
},
"updated_at": {
"name": "updated_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"room_controls_room_code_rooms_code_fk": {
"name": "room_controls_room_code_rooms_code_fk",
"tableFrom": "room_controls",
"tableTo": "rooms",
"columnsFrom": [
"room_code"
],
"columnsTo": [
"code"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {
"room_controls_paused": {
"name": "room_controls_paused",
"value": "\"room_controls\".\"paused\" IN (0, 1)"
},
"room_controls_join_locked": {
"name": "room_controls_join_locked",
"value": "\"room_controls\".\"join_locked\" IN (0, 1)"
},
"room_controls_revision": {
"name": "room_controls_revision",
"value": "\"room_controls\".\"revision\" >= 0"
}
}
},
"room_entry_receipts": {
"name": "room_entry_receipts",
"columns": {
"operation_hash": {
"name": "operation_hash",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"request_hash": {
"name": "request_hash",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"session_hash": {
"name": "session_hash",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"room_code": {
"name": "room_code",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"player_id": {
"name": "player_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"room_entry_receipts_room_code_rooms_code_fk": {
"name": "room_entry_receipts_room_code_rooms_code_fk",
"tableFrom": "room_entry_receipts",
"tableTo": "rooms",
"columnsFrom": [
"room_code"
],
"columnsTo": [
"code"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"room_messages": {
"name": "room_messages",
"columns": {
"sequence": {
"name": "sequence",
"type": "integer",
"primaryKey": true,
"notNull": true,
"autoincrement": true
},
"room_code": {
"name": "room_code",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"id": {
"name": "id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"sender_id": {
"name": "sender_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"sender_session_hash": {
"name": "sender_session_hash",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"sender_name": {
"name": "sender_name",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"sender_faction": {
"name": "sender_faction",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"recipient_id": {
"name": "recipient_id",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"recipient_name": {
"name": "recipient_name",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"body": {
"name": "body",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {
"room_messages_room_id": {
"name": "room_messages_room_id",
"columns": [
"room_code",
"id"
],
"isUnique": true
},
"room_messages_channel": {
"name": "room_messages_channel",
"columns": [
"room_code",
"recipient_id",
"sequence"
],
"isUnique": false
},
"room_messages_sender": {
"name": "room_messages_sender",
"columns": [
"room_code",
"sender_id",
"created_at"
],
"isUnique": false
}
},
"foreignKeys": {
"room_messages_room_code_rooms_code_fk": {
"name": "room_messages_room_code_rooms_code_fk",
"tableFrom": "room_messages",
"tableTo": "rooms",
"columnsFrom": [
"room_code"
],
"columnsTo": [
"code"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"rooms": {
"name": "rooms",
"columns": {
"code": {
"name": "code",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"state": {
"name": "state",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"version": {
"name": "version",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 0
},
"updated_at": {
"name": "updated_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {
"rooms_updated_at": {
"name": "rooms_updated_at",
"columns": [
"updated_at"
],
"isUnique": false
}
},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"seat_ai_delegations": {
"name": "seat_ai_delegations",
"columns": {
"room_code": {
"name": "room_code",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"owner_id": {
"name": "owner_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"grant_id": {
"name": "grant_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"delegate_id": {
"name": "delegate_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"difficulty": {
"name": "difficulty",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"owner_session_hash": {
"name": "owner_session_hash",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"delegate_session_hash": {
"name": "delegate_session_hash",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"used_at": {
"name": "used_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"revoked_at": {
"name": "revoked_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
}
},
"indexes": {
"seat_ai_delegations_grant_id_unique": {
"name": "seat_ai_delegations_grant_id_unique",
"columns": [
"grant_id"
],
"isUnique": true
}
},
"foreignKeys": {
"seat_ai_delegations_room_code_rooms_code_fk": {
"name": "seat_ai_delegations_room_code_rooms_code_fk",
"tableFrom": "seat_ai_delegations",
"tableTo": "rooms",
"columnsFrom": [
"room_code"
],
"columnsTo": [
"code"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"seat_ai_delegations_room_code_owner_id_grant_id_pk": {
"columns": [
"room_code",
"owner_id",
"grant_id"
],
"name": "seat_ai_delegations_room_code_owner_id_grant_id_pk"
}
},
"uniqueConstraints": {},
"checkConstraints": {}
},
"seat_handover_claim_receipts": {
"name": "seat_handover_claim_receipts",
"columns": {
"room_code": {
"name": "room_code",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"player_id": {
"name": "player_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"operation_hash": {
"name": "operation_hash",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"offer_hash": {
"name": "offer_hash",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"secret_hash": {
"name": "secret_hash",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"session_hash": {
"name": "session_hash",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"claim_fence": {
"name": "claim_fence",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"claimed_at": {
"name": "claimed_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {
"seat_handover_claim_receipts_claim_fence_unique": {
"name": "seat_handover_claim_receipts_claim_fence_unique",
"columns": [
"claim_fence"
],
"isUnique": true
}
},
"foreignKeys": {
"seat_handover_claim_receipts_room_code_rooms_code_fk": {
"name": "seat_handover_claim_receipts_room_code_rooms_code_fk",
"tableFrom": "seat_handover_claim_receipts",
"tableTo": "rooms",
"columnsFrom": [
"room_code"
],
"columnsTo": [
"code"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"seat_handover_claim_receipts_room_code_player_id_operation_hash_pk": {
"columns": [
"room_code",
"player_id",
"operation_hash"
],
"name": "seat_handover_claim_receipts_room_code_player_id_operation_hash_pk"
}
},
"uniqueConstraints": {},
"checkConstraints": {}
},
"seat_handover_offers": {
"name": "seat_handover_offers",
"columns": {
"room_code": {
"name": "room_code",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"player_id": {
"name": "player_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"offer_hash": {
"name": "offer_hash",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"secret_hash": {
"name": "secret_hash",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"issuer_session_hash": {
"name": "issuer_session_hash",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"claim_operation_hash": {
"name": "claim_operation_hash",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"session_hash": {
"name": "session_hash",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"claimed_at": {
"name": "claimed_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
}
},
"indexes": {
"seat_handover_offers_offer_hash_unique": {
"name": "seat_handover_offers_offer_hash_unique",
"columns": [
"offer_hash"
],
"isUnique": true
}
},
"foreignKeys": {
"seat_handover_offers_room_code_rooms_code_fk": {
"name": "seat_handover_offers_room_code_rooms_code_fk",
"tableFrom": "seat_handover_offers",
"tableTo": "rooms",
"columnsFrom": [
"room_code"
],
"columnsTo": [
"code"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"seat_handover_offers_room_code_player_id_pk": {
"columns": [
"room_code",
"player_id"
],
"name": "seat_handover_offers_room_code_player_id_pk"
}
},
"uniqueConstraints": {},
"checkConstraints": {}
},
"seat_recovery_keys": {
"name": "seat_recovery_keys",
"columns": {
"room_code": {
"name": "room_code",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"player_id": {
"name": "player_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"recovery_hash": {
"name": "recovery_hash",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"current_operation_hash": {
"name": "current_operation_hash",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"seat_recovery_keys_room_code_rooms_code_fk": {
"name": "seat_recovery_keys_room_code_rooms_code_fk",
"tableFrom": "seat_recovery_keys",
"tableTo": "rooms",
"columnsFrom": [
"room_code"
],
"columnsTo": [
"code"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"seat_recovery_keys_room_code_player_id_pk": {
"columns": [
"room_code",
"player_id"
],
"name": "seat_recovery_keys_room_code_player_id_pk"
}
},
"uniqueConstraints": {},
"checkConstraints": {}
},
"seat_recovery_receipts": {
"name": "seat_recovery_receipts",
"columns": {
"room_code": {
"name": "room_code",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"player_id": {
"name": "player_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"operation_hash": {
"name": "operation_hash",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"recovery_hash": {
"name": "recovery_hash",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"session_hash": {
"name": "session_hash",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"seat_recovery_receipts_room_code_rooms_code_fk": {
"name": "seat_recovery_receipts_room_code_rooms_code_fk",
"tableFrom": "seat_recovery_receipts",
"tableTo": "rooms",
"columnsFrom": [
"room_code"
],
"columnsTo": [
"code"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"seat_recovery_receipts_room_code_player_id_operation_hash_pk": {
"columns": [
"room_code",
"player_id",
"operation_hash"
],
"name": "seat_recovery_receipts_room_code_player_id_operation_hash_pk"
}
},
"uniqueConstraints": {},
"checkConstraints": {}
},
"seats": {
"name": "seats",
"columns": {
"token_hash": {
"name": "token_hash",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"revoked": {
"name": "revoked",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 0
},
"room_code": {
"name": "room_code",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"player_id": {
"name": "player_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"seats_room_code_rooms_code_fk": {
"name": "seats_room_code_rooms_code_fk",
"tableFrom": "seats",
"tableTo": "rooms",
"columnsFrom": [
"room_code"
],
"columnsTo": [
"code"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
}
},
"views": {},
"enums": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"indexes": {}
}
}