diff --git a/release/migrate_add_registered_status.sql b/release/migrate_add_registered_status.sql new file mode 100644 index 0000000..9dd2013 --- /dev/null +++ b/release/migrate_add_registered_status.sql @@ -0,0 +1,7 @@ +-- Migration: Add 'registered' status to videos status check constraint +-- Date: 2026-05-15 +-- Usage: psql -U accusys -d momentry -f migrate_add_registered_status.sql + +ALTER TABLE videos DROP CONSTRAINT IF EXISTS chk_videos_status; +ALTER TABLE videos ADD CONSTRAINT chk_videos_status + CHECK (status::text = ANY (ARRAY['registered'::text, 'pending'::text, 'processing'::text, 'completed'::text, 'failed'::text])); diff --git a/src/api/server.rs b/src/api/server.rs index 7250820..e68a3ba 100644 --- a/src/api/server.rs +++ b/src/api/server.rs @@ -1036,7 +1036,7 @@ async fn register_single_file( } let videos_table = schema::table_name("videos"); - let status = "pending"; + let status = "registered"; let _ = sqlx::query(&format!( "INSERT INTO {} (file_uuid, file_path, file_name, file_type, duration, width, height, fps, probe_json, status, content_hash, registration_time) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, NOW()) ON CONFLICT (file_uuid) DO UPDATE SET file_path = EXCLUDED.file_path, file_name = EXCLUDED.file_name, status = EXCLUDED.status, content_hash = EXCLUDED.content_hash", videos_table diff --git a/src/core/db/postgres_db.rs b/src/core/db/postgres_db.rs index e437862..3173e52 100644 --- a/src/core/db/postgres_db.rs +++ b/src/core/db/postgres_db.rs @@ -141,6 +141,7 @@ pub struct StorageStatus { #[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "snake_case")] pub enum VideoStatus { + Registered, Pending, Processing, Completed, @@ -150,6 +151,7 @@ pub enum VideoStatus { impl VideoStatus { pub fn as_str(&self) -> &'static str { match self { + VideoStatus::Registered => "registered", VideoStatus::Pending => "pending", VideoStatus::Processing => "processing", VideoStatus::Completed => "completed", @@ -159,6 +161,7 @@ impl VideoStatus { pub fn from_db_str(s: &str) -> Option { match s { + "registered" => Some(VideoStatus::Registered), "pending" => Some(VideoStatus::Pending), "processing" => Some(VideoStatus::Processing), "completed" => Some(VideoStatus::Completed),