summaryrefslogtreecommitdiff
path: root/src/channel/repo.rs
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-10-22 19:08:53 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-10-22 19:12:30 -0400
commitdb940bacd096a33a65f29759e70ea1acf6186a67 (patch)
treec6901c22a45e36415f63efe988d4d4f2a309df81 /src/channel/repo.rs
parent3f9648eed48cd8b6cd35d0ae2ee5bbe25fa735ac (diff)
Provide `hi-recanonicalize` to recover from canonicalized-name problems.
Diffstat (limited to 'src/channel/repo.rs')
-rw-r--r--src/channel/repo.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/channel/repo.rs b/src/channel/repo.rs
index 4baa95b..e26ac2b 100644
--- a/src/channel/repo.rs
+++ b/src/channel/repo.rs
@@ -300,6 +300,38 @@ impl<'c> Channels<'c> {
Ok(channels)
}
+
+ pub async fn recanonicalize(&mut self) -> Result<(), sqlx::Error> {
+ let channels = sqlx::query!(
+ r#"
+ select
+ id as "id: Id",
+ display_name as "display_name: String"
+ from channel_name
+ "#,
+ )
+ .fetch_all(&mut *self.0)
+ .await?;
+
+ for channel in channels {
+ let name = Name::from(channel.display_name);
+ let canonical_name = name.canonical();
+
+ sqlx::query!(
+ r#"
+ update channel_name
+ set canonical_name = $1
+ where id = $2
+ "#,
+ canonical_name,
+ channel.id,
+ )
+ .execute(&mut *self.0)
+ .await?;
+ }
+
+ Ok(())
+ }
}
#[derive(Debug, thiserror::Error)]