summaryrefslogtreecommitdiff
path: root/src/message/repo.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/message/repo.rs')
-rw-r--r--src/message/repo.rs46
1 files changed, 23 insertions, 23 deletions
diff --git a/src/message/repo.rs b/src/message/repo.rs
index 3b2b8f7..ae41736 100644
--- a/src/message/repo.rs
+++ b/src/message/repo.rs
@@ -62,7 +62,25 @@ impl<'c> Messages<'c> {
Ok(message)
}
- async fn by_id(&mut self, channel: &Channel, message: &Id) -> Result<History, sqlx::Error> {
+ pub async fn in_channel(&mut self, channel: &Channel) -> Result<Vec<Id>, sqlx::Error> {
+ let messages = sqlx::query_scalar!(
+ r#"
+ select
+ message.id as "id: Id"
+ from message
+ join channel on message.channel = channel.id
+ where channel.id = $1
+ order by message.sent_sequence
+ "#,
+ channel.id,
+ )
+ .fetch_all(&mut *self.0)
+ .await?;
+
+ Ok(messages)
+ }
+
+ async fn by_id(&mut self, message: &Id) -> Result<History, sqlx::Error> {
let message = sqlx::query!(
r#"
select
@@ -78,10 +96,8 @@ impl<'c> Messages<'c> {
join channel on message.channel = channel.id
join login as sender on message.sender = sender.id
where message.id = $1
- and message.channel = $2
"#,
message,
- channel.id,
)
.map(|row| History {
message: Message {
@@ -110,11 +126,10 @@ impl<'c> Messages<'c> {
pub async fn delete(
&mut self,
- channel: &Channel,
message: &Id,
deleted: &Instant,
) -> Result<History, sqlx::Error> {
- let history = self.by_id(channel, message).await?;
+ let history = self.by_id(message).await?;
sqlx::query_scalar!(
r#"
@@ -134,31 +149,16 @@ impl<'c> Messages<'c> {
})
}
- pub async fn expired(
- &mut self,
- expire_at: &DateTime,
- ) -> Result<Vec<(Channel, Id)>, sqlx::Error> {
- let messages = sqlx::query!(
+ pub async fn expired(&mut self, expire_at: &DateTime) -> Result<Vec<Id>, sqlx::Error> {
+ let messages = sqlx::query_scalar!(
r#"
select
- channel.id as "channel_id: channel::Id",
- channel.name as "channel_name",
- message.id as "message: Id"
+ id as "message: Id"
from message
- join channel on message.channel = channel.id
where sent_at < $1
"#,
expire_at,
)
- .map(|row| {
- (
- Channel {
- id: row.channel_id,
- name: row.channel_name,
- },
- row.message,
- )
- })
.fetch_all(&mut *self.0)
.await?;