mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-10-09 02:54:14 +00:00
28 lines
1.2 KiB
SQL
28 lines
1.2 KiB
SQL
CREATE TABLE direct_media_upload_slots (
|
|
attachment_id TEXT NOT NULL PRIMARY KEY,
|
|
expires_at INTEGER NOT NULL,
|
|
maximum_object_bytes INTEGER NOT NULL,
|
|
upload_url TEXT NOT NULL,
|
|
upload_fields_json TEXT NOT NULL,
|
|
capability BLOB NOT NULL,
|
|
state TEXT NOT NULL DEFAULT 'cached'
|
|
CHECK (state IN ('cached', 'reserved', 'consumed', 'abandoned')),
|
|
created_at INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER))
|
|
);
|
|
CREATE INDEX direct_media_upload_slots_usable_idx
|
|
ON direct_media_upload_slots(state, expires_at);
|
|
|
|
CREATE TABLE direct_media_upload_jobs (
|
|
attachment_id TEXT NOT NULL PRIMARY KEY
|
|
REFERENCES direct_media_upload_slots(attachment_id) ON DELETE CASCADE,
|
|
media_id TEXT NOT NULL,
|
|
multipart_path TEXT NOT NULL,
|
|
manifest_path TEXT NOT NULL,
|
|
complete_body_path TEXT NOT NULL,
|
|
native_descriptor_json TEXT NOT NULL,
|
|
state TEXT NOT NULL DEFAULT 'prepared'
|
|
CHECK (state IN ('prepared', 'scheduled', 'waiting_for_server', 'ready', 'failed')),
|
|
expires_at INTEGER NOT NULL,
|
|
created_at INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER)),
|
|
updated_at INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER))
|
|
);
|