36 lines
1.1 KiB
SQL
36 lines
1.1 KiB
SQL
CREATE TABLE IF NOT EXISTS api_keys (
|
|
id TEXT PRIMARY KEY,
|
|
user_id TEXT NOT NULL,
|
|
name TEXT NOT NULL,
|
|
key_hash TEXT NOT NULL UNIQUE,
|
|
scopes TEXT NOT NULL DEFAULT 'sync:read,sync:write',
|
|
created_at TEXT NOT NULL,
|
|
expires_at TEXT,
|
|
last_used_at TEXT,
|
|
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_api_keys_key_hash ON api_keys(key_hash);
|
|
|
|
CREATE TABLE IF NOT EXISTS sync_snapshots (
|
|
id TEXT PRIMARY KEY,
|
|
device_id TEXT NOT NULL,
|
|
user_id TEXT NOT NULL,
|
|
created_at TEXT NOT NULL,
|
|
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_sync_snapshots_device ON sync_snapshots(device_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS sync_files (
|
|
snapshot_id TEXT NOT NULL,
|
|
path TEXT NOT NULL,
|
|
hash TEXT NOT NULL,
|
|
size_bytes INTEGER NOT NULL DEFAULT 0,
|
|
modified_at TEXT NOT NULL,
|
|
PRIMARY KEY (snapshot_id, path),
|
|
FOREIGN KEY(snapshot_id) REFERENCES sync_snapshots(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_sync_files_hash ON sync_files(hash);
|