summaryrefslogtreecommitdiff
path: root/makima/src/db/models.rs
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2025-12-23 22:20:52 +0000
committersoryu <soryu@soryu.co>2025-12-23 22:20:52 +0000
commit72c2590571104b8d10e3f72d7a5b984d0b520c51 (patch)
tree735aa03056a44a93b9abdf915545ad034ee2b597 /makima/src/db/models.rs
parentf5222a7ae5ade5589436778cb01fc0abe625b3c3 (diff)
downloadsoryu-72c2590571104b8d10e3f72d7a5b984d0b520c51.tar.gz
soryu-72c2590571104b8d10e3f72d7a5b984d0b520c51.zip
Add conflict notification and file update WS endpoint
Diffstat (limited to 'makima/src/db/models.rs')
-rw-r--r--makima/src/db/models.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/makima/src/db/models.rs b/makima/src/db/models.rs
index 135ae75..8204b86 100644
--- a/makima/src/db/models.rs
+++ b/makima/src/db/models.rs
@@ -68,6 +68,8 @@ pub struct File {
/// Structured body content (headings, paragraphs, charts)
#[sqlx(json)]
pub body: Vec<BodyElement>,
+ /// Version number for optimistic locking
+ pub version: i32,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
@@ -100,6 +102,8 @@ pub struct UpdateFileRequest {
pub summary: Option<String>,
/// Structured body content (optional)
pub body: Option<Vec<BodyElement>>,
+ /// Version for optimistic locking (required for updates from frontend)
+ pub version: Option<i32>,
}
/// Response for file list endpoint.
@@ -120,6 +124,8 @@ pub struct FileSummary {
pub transcript_count: usize,
/// Duration derived from last transcript end time
pub duration: Option<f32>,
+ /// Version number for optimistic locking
+ pub version: i32,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
@@ -137,6 +143,7 @@ impl From<File> for FileSummary {
description: file.description,
transcript_count: file.transcript.len(),
duration: if duration > 0.0 { Some(duration) } else { None },
+ version: file.version,
created_at: file.created_at,
updated_at: file.updated_at,
}