From 3e364644f789d22d199203b12087d5f27e6db696 Mon Sep 17 00:00:00 2001 From: PoiScript Date: Tue, 9 Jul 2024 12:42:12 +0800 Subject: [PATCH] fix: update updated_at --- ...eb11b161968b87e2d2af7a814a053a7862e4.json} | 4 ++-- ...94108ad3b7f753db6776dd549731f46c81c4a.json | 15 ------------ ...6d227f61f8fdf0953692f2b256d59ba13a418.json | 15 ++++++++++++ ...4316de4140971c94aea9904f45650a9d708e.json} | 7 +++--- vtstats-database/streams/end_stream.rs | 5 ++-- vtstats-database/streams/melisearch.rs | 1 + vtstats-database/streams/start_stream.rs | 24 +++++++++++-------- vtstats-database/streams/upsert_stream.rs | 9 +++++-- 8 files changed, 46 insertions(+), 34 deletions(-) rename .sqlx/{query-1fe727cd1683cbb8d4aec74569b766639cd308d35109a1dfb2990495c4248e76.json => query-23b0bbd5d756ef85378f2b331198eb11b161968b87e2d2af7a814a053a7862e4.json} (52%) delete mode 100644 .sqlx/query-29991311af32e000593945e7f9294108ad3b7f753db6776dd549731f46c81c4a.json create mode 100644 .sqlx/query-838d29fe1afdca1d9d45566f31e6d227f61f8fdf0953692f2b256d59ba13a418.json rename .sqlx/{query-23b0285010839559cdab6b03377061271ab248fde5137b320803feed50752779.json => query-88933e58f1e9f257c8f5493d4feb4316de4140971c94aea9904f45650a9d708e.json} (64%) diff --git a/.sqlx/query-1fe727cd1683cbb8d4aec74569b766639cd308d35109a1dfb2990495c4248e76.json b/.sqlx/query-23b0bbd5d756ef85378f2b331198eb11b161968b87e2d2af7a814a053a7862e4.json similarity index 52% rename from .sqlx/query-1fe727cd1683cbb8d4aec74569b766639cd308d35109a1dfb2990495c4248e76.json rename to .sqlx/query-23b0bbd5d756ef85378f2b331198eb11b161968b87e2d2af7a814a053a7862e4.json index a7ef324..a8e3369 100644 --- a/.sqlx/query-1fe727cd1683cbb8d4aec74569b766639cd308d35109a1dfb2990495c4248e76.json +++ b/.sqlx/query-23b0bbd5d756ef85378f2b331198eb11b161968b87e2d2af7a814a053a7862e4.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "\n UPDATE streams SET title = COALESCE($2, title), updated_at = $1, start_time = COALESCE(start_time, $3), status = 'live', like_max = GREATEST($4, like_max) WHERE stream_id = $5 RETURNING like_max\n ", + "query": "UPDATE streams SET title = COALESCE($2, title), updated_at = $1, start_time = $3, status = 'live', like_max = GREATEST($4, like_max) WHERE stream_id = $5 RETURNING like_max", "describe": { "columns": [ { @@ -22,5 +22,5 @@ true ] }, - "hash": "1fe727cd1683cbb8d4aec74569b766639cd308d35109a1dfb2990495c4248e76" + "hash": "23b0bbd5d756ef85378f2b331198eb11b161968b87e2d2af7a814a053a7862e4" } diff --git a/.sqlx/query-29991311af32e000593945e7f9294108ad3b7f753db6776dd549731f46c81c4a.json b/.sqlx/query-29991311af32e000593945e7f9294108ad3b7f753db6776dd549731f46c81c4a.json deleted file mode 100644 index cf34737..0000000 --- a/.sqlx/query-29991311af32e000593945e7f9294108ad3b7f753db6776dd549731f46c81c4a.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE streams SET status = 'ended', end_time = $1 WHERE stream_id = $2", - "describe": { - "columns": [], - "parameters": { - "Left": [ - "Timestamptz", - "Int4" - ] - }, - "nullable": [] - }, - "hash": "29991311af32e000593945e7f9294108ad3b7f753db6776dd549731f46c81c4a" -} diff --git a/.sqlx/query-838d29fe1afdca1d9d45566f31e6d227f61f8fdf0953692f2b256d59ba13a418.json b/.sqlx/query-838d29fe1afdca1d9d45566f31e6d227f61f8fdf0953692f2b256d59ba13a418.json new file mode 100644 index 0000000..9c3bf66 --- /dev/null +++ b/.sqlx/query-838d29fe1afdca1d9d45566f31e6d227f61f8fdf0953692f2b256d59ba13a418.json @@ -0,0 +1,15 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE streams SET status = 'ended', end_time = $1, updated_at = $1 WHERE stream_id = $2", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Timestamptz", + "Int4" + ] + }, + "nullable": [] + }, + "hash": "838d29fe1afdca1d9d45566f31e6d227f61f8fdf0953692f2b256d59ba13a418" +} diff --git a/.sqlx/query-23b0285010839559cdab6b03377061271ab248fde5137b320803feed50752779.json b/.sqlx/query-88933e58f1e9f257c8f5493d4feb4316de4140971c94aea9904f45650a9d708e.json similarity index 64% rename from .sqlx/query-23b0285010839559cdab6b03377061271ab248fde5137b320803feed50752779.json rename to .sqlx/query-88933e58f1e9f257c8f5493d4feb4316de4140971c94aea9904f45650a9d708e.json index 3285a83..a7cabff 100644 --- a/.sqlx/query-23b0285010839559cdab6b03377061271ab248fde5137b320803feed50752779.json +++ b/.sqlx/query-88933e58f1e9f257c8f5493d4feb4316de4140971c94aea9904f45650a9d708e.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "\nINSERT INTO streams AS t (\n platform,\n platform_id,\n channel_id,\n title,\n status,\n thumbnail_url,\n schedule_time,\n start_time,\n end_time,\n vtuber_id\n )\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)\nON CONFLICT (platform, platform_id) DO UPDATE\n SET title = COALESCE($4, t.title),\n status = COALESCE($5, t.status),\n thumbnail_url = COALESCE($6, t.thumbnail_url),\n schedule_time = COALESCE($7, t.schedule_time),\n start_time = COALESCE($8, t.start_time),\n end_time = COALESCE($9, t.end_time)\n RETURNING stream_id\n ", + "query": "\nINSERT INTO streams AS t (\n platform,\n platform_id,\n channel_id,\n title,\n status,\n thumbnail_url,\n schedule_time,\n start_time,\n end_time,\n vtuber_id,\n updated_at\n )\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)\nON CONFLICT (platform, platform_id) DO UPDATE\n SET title = COALESCE($4, t.title),\n status = COALESCE($5, t.status),\n thumbnail_url = COALESCE($6, t.thumbnail_url),\n schedule_time = COALESCE($7, t.schedule_time),\n start_time = COALESCE($8, t.start_time),\n end_time = COALESCE($9, t.end_time)\n RETURNING stream_id\n ", "describe": { "columns": [ { @@ -42,12 +42,13 @@ "Timestamptz", "Timestamptz", "Timestamptz", - "Text" + "Text", + "Timestamptz" ] }, "nullable": [ false ] }, - "hash": "23b0285010839559cdab6b03377061271ab248fde5137b320803feed50752779" + "hash": "88933e58f1e9f257c8f5493d4feb4316de4140971c94aea9904f45650a9d708e" } diff --git a/vtstats-database/streams/end_stream.rs b/vtstats-database/streams/end_stream.rs index 5f2c6ce..c111444 100644 --- a/vtstats-database/streams/end_stream.rs +++ b/vtstats-database/streams/end_stream.rs @@ -8,7 +8,7 @@ pub async fn end_stream(stream_id: i32, pool: &PgPool, client: &Client) -> Resul let now = Utc::now(); let query = sqlx::query!( - "UPDATE streams SET status = 'ended', end_time = $1 WHERE stream_id = $2", + "UPDATE streams SET status = 'ended', end_time = $1, updated_at = $1 WHERE stream_id = $2", now, stream_id ) @@ -17,8 +17,9 @@ pub async fn end_stream(stream_id: i32, pool: &PgPool, client: &Client) -> Resul if let Err(err) = super::melisearch::add_or_update( super::melisearch::Document { stream_id, - end_time: Some(now), status: Some(StreamStatus::Ended), + end_time: Some(now), + updated_at: now, ..Default::default() }, client, diff --git a/vtstats-database/streams/melisearch.rs b/vtstats-database/streams/melisearch.rs index 28eb618..cea5d39 100644 --- a/vtstats-database/streams/melisearch.rs +++ b/vtstats-database/streams/melisearch.rs @@ -34,6 +34,7 @@ pub struct Document<'q> { pub schedule_time: Option>, pub start_time: Option>, pub end_time: Option>, + pub updated_at: DateTime, pub like_max: Option, } diff --git a/vtstats-database/streams/start_stream.rs b/vtstats-database/streams/start_stream.rs index 011505e..2bfba5a 100644 --- a/vtstats-database/streams/start_stream.rs +++ b/vtstats-database/streams/start_stream.rs @@ -2,6 +2,8 @@ use chrono::{DateTime, Utc}; use meilisearch_sdk::client::Client; use sqlx::{PgPool, Result}; +use super::StreamStatus; + pub async fn start_stream( stream_id: i32, title: Option<&str>, @@ -13,16 +15,14 @@ pub async fn start_stream( let now = Utc::now(); let query = sqlx::query!( - " - UPDATE streams \ - SET title = COALESCE($2, title), \ - updated_at = $1, \ - start_time = COALESCE(start_time, $3), \ - status = 'live', \ - like_max = GREATEST($4, like_max) \ - WHERE stream_id = $5 \ -RETURNING like_max - ", + "UPDATE streams \ + SET title = COALESCE($2, title), \ + updated_at = $1, \ + start_time = $3, \ + status = 'live', \ + like_max = GREATEST($4, like_max) \ + WHERE stream_id = $5 \ + RETURNING like_max", now, // $1 title, // $2 start_time, // $3 @@ -37,6 +37,10 @@ RETURNING like_max if let Err(err) = super::melisearch::add_or_update( super::melisearch::Document { stream_id, + title, + updated_at: now, + start_time: Some(start_time), + status: Some(StreamStatus::Live), like_max: rec.like_max, ..Default::default() }, diff --git a/vtstats-database/streams/upsert_stream.rs b/vtstats-database/streams/upsert_stream.rs index 7c33cae..e698fc0 100644 --- a/vtstats-database/streams/upsert_stream.rs +++ b/vtstats-database/streams/upsert_stream.rs @@ -24,6 +24,8 @@ pub struct UpsertStreamQuery<'q> { impl<'q> UpsertStreamQuery<'q> { pub async fn execute(self, pool: &PgPool, client: &Client) -> Result { + let now = Utc::now(); + let query = sqlx::query!( r#" INSERT INTO streams AS t ( @@ -36,9 +38,10 @@ INSERT INTO streams AS t ( schedule_time, start_time, end_time, - vtuber_id + vtuber_id, + updated_at ) - VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) ON CONFLICT (platform, platform_id) DO UPDATE SET title = COALESCE($4, t.title), status = COALESCE($5, t.status), @@ -58,6 +61,7 @@ ON CONFLICT (platform, platform_id) DO UPDATE self.start_time, // $8 self.end_time, // $9 self.vtuber_id, // $10 + now, // $11 ) .fetch_one(pool); @@ -76,6 +80,7 @@ ON CONFLICT (platform, platform_id) DO UPDATE start_time: self.start_time, end_time: self.end_time, vtuber_id: Some(self.vtuber_id), + updated_at: now, ..Default::default() }, client,