summaryrefslogtreecommitdiff
path: root/src/repo
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-09-27 20:18:50 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-09-28 01:00:09 -0400
commit1458ff7be5d883444943090cb636e9343487d03e (patch)
treeadb410ce9245dc2a1562fc370f2398cab35e7507 /src/repo
parenteff129bc1f29bcb1b2b9d10c6b49ab886edc83d6 (diff)
Send created events when channels are added.
Diffstat (limited to 'src/repo')
-rw-r--r--src/repo/channel.rs30
1 files changed, 22 insertions, 8 deletions
diff --git a/src/repo/channel.rs b/src/repo/channel.rs
index d223dab..e85b898 100644
--- a/src/repo/channel.rs
+++ b/src/repo/channel.rs
@@ -2,7 +2,7 @@ use std::fmt;
use sqlx::{sqlite::Sqlite, SqliteConnection, Transaction};
-use crate::id::Id as BaseId;
+use crate::{clock::DateTime, id::Id as BaseId};
pub trait Provider {
fn channels(&mut self) -> Channels;
@@ -20,22 +20,32 @@ pub struct Channels<'t>(&'t mut SqliteConnection);
pub struct Channel {
pub id: Id,
pub name: String,
+ #[serde(skip)]
+ pub created_at: DateTime,
}
impl<'c> Channels<'c> {
- pub async fn create(&mut self, name: &str) -> Result<Channel, sqlx::Error> {
+ pub async fn create(
+ &mut self,
+ name: &str,
+ created_at: &DateTime,
+ ) -> Result<Channel, sqlx::Error> {
let id = Id::generate();
let channel = sqlx::query_as!(
Channel,
r#"
insert
- into channel (id, name)
- values ($1, $2)
- returning id as "id: Id", name
+ into channel (id, name, created_at)
+ values ($1, $2, $3)
+ returning
+ id as "id: Id",
+ name,
+ created_at as "created_at: DateTime"
"#,
id,
name,
+ created_at,
)
.fetch_one(&mut *self.0)
.await?;
@@ -47,7 +57,10 @@ impl<'c> Channels<'c> {
let channel = sqlx::query_as!(
Channel,
r#"
- select id as "id: Id", name
+ select
+ id as "id: Id",
+ name,
+ created_at as "created_at: DateTime"
from channel
where id = $1
"#,
@@ -64,8 +77,9 @@ impl<'c> Channels<'c> {
Channel,
r#"
select
- channel.id as "id: Id",
- channel.name
+ id as "id: Id",
+ name,
+ created_at as "created_at: DateTime"
from channel
order by channel.name
"#,