From db940bacd096a33a65f29759e70ea1acf6186a67 Mon Sep 17 00:00:00 2001 From: Owen Jacobson Date: Tue, 22 Oct 2024 19:08:53 -0400 Subject: Provide `hi-recanonicalize` to recover from canonicalized-name problems. --- src/channel/repo.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src/channel/repo.rs') 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)] -- cgit v1.2.3