-- Video support for SQLite: media kind and duration on photos, the playback -- object role (photo_objects is rebuilt because SQLite cannot alter a CHECK -- constraint) and a job kind distinguishing image work from video transcoding. ALTER TABLE photos ADD COLUMN kind TEXT NOT NULL DEFAULT 'image'; ALTER TABLE photos ADD COLUMN duration_ms INTEGER; CREATE TABLE photo_objects_new ( photo_id TEXT NOT NULL REFERENCES photos(id) ON DELETE CASCADE, object_id TEXT NOT NULL REFERENCES objects(id) ON DELETE RESTRICT, role TEXT NOT NULL CHECK (role IN ('original', 'thumb', 'medium', 'preview', 'playback')), PRIMARY KEY (photo_id, role) ); INSERT INTO photo_objects_new (photo_id, object_id, role) SELECT photo_id, object_id, role FROM photo_objects; DROP TABLE photo_objects; ALTER TABLE photo_objects_new RENAME TO photo_objects; CREATE INDEX IF NOT EXISTS photo_objects_object_idx ON photo_objects (object_id); ALTER TABLE variant_jobs ADD COLUMN kind TEXT NOT NULL DEFAULT 'image';