Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions backend/migrations/20260310120000_update_time_labels.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
ALTER TABLE time_labels RENAME COLUMN timestamp TO start_timestamp;
ALTER TABLE time_labels ADD COLUMN end_timestamp TIMESTAMPTZ;
ALTER TABLE time_labels ADD COLUMN color TEXT NOT NULL DEFAULT '';
ALTER TABLE time_labels ALTER COLUMN color DROP DEFAULT;
10 changes: 6 additions & 4 deletions backend/shared-logic/src/db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -372,13 +372,15 @@ pub async fn insert_time_labels(client: &DbClient, session_id: i32, labels: Vec<
}

let mut query_builder = sqlx::QueryBuilder::new(
"INSERT INTO time_labels (session_id, timestamp, label) "
"INSERT INTO time_labels (session_id, start_timestamp, end_timestamp, label, color) "
);

query_builder.push_values(labels.iter(), |mut b, label| {
b.push_bind(session_id)
.push_bind(label.timestamp)
.push_bind(&label.label);
.push_bind(label.start_timestamp)
.push_bind(label.end_timestamp)
.push_bind(&label.label)
.push_bind(&label.color);
});

query_builder.build().execute(&**client).await?;
Expand Down Expand Up @@ -416,7 +418,7 @@ pub async fn get_time_labels_by_range(client: &DbClient, session_id: i32, start:

let labels = sqlx::query_as!(
TimeLabel,
"SELECT id, session_id, timestamp, label FROM time_labels WHERE session_id = $1 AND timestamp >= $2 AND timestamp <= $3 ORDER BY timestamp",
"SELECT id, session_id, start_timestamp, end_timestamp, label, color FROM time_labels WHERE session_id = $1 AND start_timestamp >= $2 AND start_timestamp <= $3 ORDER BY start_timestamp",
session_id,
start,
end,
Expand Down
8 changes: 6 additions & 2 deletions backend/shared-logic/src/models.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,16 +54,20 @@ pub struct FrontendState {
pub struct TimeLabel {
pub id: i32,
pub session_id: i32,
pub timestamp: DateTime<Utc>,
pub start_timestamp: DateTime<Utc>,
pub end_timestamp: Option<DateTime<Utc>>,
pub label: String,
pub color: String,
}

// Struct for a time label coming INTO the API from the frontend
// No id (auto-generated) or session_id (comes from URL path)
#[derive(Debug, Serialize, Deserialize)]
pub struct NewTimeLabel {
pub timestamp: DateTime<Utc>,
pub start_timestamp: DateTime<Utc>,
pub end_timestamp: Option<DateTime<Utc>>,
pub label: String,
pub color: String,
}

// Struct for a row of EEG data coming OUT of the DB
Expand Down
Loading