31 lines
1.5 KiB
Python
31 lines
1.5 KiB
Python
"""Startup equivalents of migrations 19 and 20 (kept in sync by tests)."""
|
|
|
|
FEATURE_SCHEMA = (
|
|
'''CREATE TABLE IF NOT EXISTS push_devices (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
session_id INTEGER NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
|
|
device_id UUID NOT NULL UNIQUE,
|
|
token TEXT NOT NULL UNIQUE CHECK (length(token) BETWEEN 20 AND 4096),
|
|
platform VARCHAR(16) NOT NULL CHECK (platform = 'android'),
|
|
app_version VARCHAR(32) NOT NULL DEFAULT '',
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
last_seen_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_push_devices_user ON push_devices(user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_push_devices_session ON push_devices(session_id);''',
|
|
'''CREATE TABLE IF NOT EXISTS bug_report_submissions (
|
|
id UUID PRIMARY KEY,
|
|
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
state VARCHAR(16) NOT NULL DEFAULT 'new'
|
|
CHECK (state IN ('new', 'sending', 'success', 'failed', 'unknown')),
|
|
issue_number INTEGER,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
submitted_at TIMESTAMP,
|
|
expires_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP + INTERVAL '24 hours'
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_bug_report_submissions_user
|
|
ON bug_report_submissions(user_id, submitted_at);''',
|
|
)
|