Add D1 migration baseline
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
CREATE TABLE IF NOT EXISTS user_devices (
|
||||
user_id TEXT NOT NULL,
|
||||
device_id TEXT NOT NULL,
|
||||
public_key TEXT NOT NULL,
|
||||
device_name TEXT NOT NULL,
|
||||
platform TEXT NOT NULL,
|
||||
approval_status TEXT NOT NULL CHECK (approval_status IN ('pending', 'approved', 'revoked')),
|
||||
created_at INTEGER NOT NULL,
|
||||
approved_at INTEGER,
|
||||
last_active_at INTEGER,
|
||||
revoked_at INTEGER,
|
||||
idempotency_key TEXT NOT NULL,
|
||||
PRIMARY KEY (user_id, device_id),
|
||||
UNIQUE (user_id, idempotency_key)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_user_devices_user_active
|
||||
ON user_devices (user_id, revoked_at, last_active_at);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS device_approvals (
|
||||
user_id TEXT NOT NULL,
|
||||
approval_id TEXT NOT NULL,
|
||||
device_id TEXT NOT NULL,
|
||||
requester_device_id TEXT NOT NULL,
|
||||
status TEXT NOT NULL CHECK (status IN ('pending', 'approved', 'rejected', 'expired')),
|
||||
requested_at INTEGER NOT NULL,
|
||||
decided_at INTEGER,
|
||||
expires_at INTEGER NOT NULL,
|
||||
idempotency_key TEXT NOT NULL,
|
||||
PRIMARY KEY (user_id, approval_id),
|
||||
UNIQUE (user_id, idempotency_key),
|
||||
FOREIGN KEY (user_id, device_id) REFERENCES user_devices (user_id, device_id)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_device_approvals_user_status
|
||||
ON device_approvals (user_id, status, expires_at);
|
||||
Reference in New Issue
Block a user