chore(monorepo): delta, january, quark
This commit is contained in:
11
crates/quark/src/impl/dummy/admin/migrations.rs
Normal file
11
crates/quark/src/impl/dummy/admin/migrations.rs
Normal file
@@ -0,0 +1,11 @@
|
||||
use crate::{AbstractMigrations, Result};
|
||||
|
||||
use super::super::DummyDb;
|
||||
|
||||
#[async_trait]
|
||||
impl AbstractMigrations for DummyDb {
|
||||
async fn migrate_database(&self) -> Result<()> {
|
||||
info!("Migrating the database.");
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
42
crates/quark/src/impl/dummy/autumn/attachment.rs
Normal file
42
crates/quark/src/impl/dummy/autumn/attachment.rs
Normal file
@@ -0,0 +1,42 @@
|
||||
use crate::models::attachment::File;
|
||||
use crate::{AbstractAttachment, Result};
|
||||
|
||||
use super::super::DummyDb;
|
||||
|
||||
#[async_trait]
|
||||
impl AbstractAttachment for DummyDb {
|
||||
async fn find_and_use_attachment(
|
||||
&self,
|
||||
attachment_id: &str,
|
||||
tag: &str,
|
||||
_parent_type: &str,
|
||||
parent_id: &str,
|
||||
) -> Result<File> {
|
||||
Ok(File {
|
||||
id: attachment_id.into(),
|
||||
tag: tag.into(),
|
||||
filename: "file.txt".into(),
|
||||
content_type: "plain/text".into(),
|
||||
size: 100,
|
||||
|
||||
object_id: Some(parent_id.into()),
|
||||
|
||||
..Default::default()
|
||||
})
|
||||
}
|
||||
|
||||
async fn insert_attachment(&self, attachment: &File) -> Result<()> {
|
||||
info!("Insert {attachment:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn mark_attachment_as_reported(&self, id: &str) -> Result<()> {
|
||||
info!("Marked {id} as reported");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn mark_attachment_as_deleted(&self, id: &str) -> Result<()> {
|
||||
info!("Marked {id} as deleted");
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
90
crates/quark/src/impl/dummy/channels/channel.rs
Normal file
90
crates/quark/src/impl/dummy/channels/channel.rs
Normal file
@@ -0,0 +1,90 @@
|
||||
use std::collections::HashSet;
|
||||
|
||||
use crate::models::channel::{Channel, FieldsChannel, PartialChannel};
|
||||
use crate::{AbstractAttachment, AbstractChannel, Error, OverrideField, Result};
|
||||
|
||||
use super::super::DummyDb;
|
||||
|
||||
#[async_trait]
|
||||
impl AbstractChannel for DummyDb {
|
||||
async fn fetch_channel(&self, id: &str) -> Result<Channel> {
|
||||
Ok(Channel::Group {
|
||||
id: id.into(),
|
||||
|
||||
name: "group".into(),
|
||||
owner: "owner".into(),
|
||||
description: None,
|
||||
recipients: vec!["owner".into()],
|
||||
|
||||
icon: Some(
|
||||
self.find_and_use_attachment("dummy", "dummy", "dummy", "dummy")
|
||||
.await?,
|
||||
),
|
||||
last_message_id: None,
|
||||
|
||||
permissions: None,
|
||||
|
||||
nsfw: false,
|
||||
})
|
||||
}
|
||||
|
||||
async fn fetch_channels<'a>(&self, _ids: &'a [String]) -> Result<Vec<Channel>> {
|
||||
Ok(vec![self.fetch_channel("sus").await.unwrap()])
|
||||
}
|
||||
|
||||
async fn insert_channel(&self, channel: &Channel) -> Result<()> {
|
||||
info!("Insert {channel:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn update_channel(
|
||||
&self,
|
||||
id: &str,
|
||||
channel: &PartialChannel,
|
||||
remove: Vec<FieldsChannel>,
|
||||
) -> Result<()> {
|
||||
info!("Update {id} with {channel:?} and remove {remove:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn delete_channel(&self, channel: &Channel) -> Result<()> {
|
||||
info!("Delete {channel:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn find_direct_messages(&self, user_id: &str) -> Result<Vec<Channel>> {
|
||||
Ok(vec![self.fetch_channel(user_id).await?])
|
||||
}
|
||||
|
||||
async fn find_saved_messages_channel(&self, user: &str) -> Result<Channel> {
|
||||
self.fetch_channel(user).await
|
||||
}
|
||||
|
||||
async fn find_direct_message_channel(&self, _user_a: &str, _user_b: &str) -> Result<Channel> {
|
||||
Err(Error::NotFound)
|
||||
}
|
||||
|
||||
async fn add_user_to_group(&self, channel: &str, user: &str) -> Result<()> {
|
||||
info!("Added {user} to {channel}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn remove_user_from_group(&self, channel: &str, user: &str) -> Result<()> {
|
||||
info!("Removed {user} from {channel}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn set_channel_role_permission(
|
||||
&self,
|
||||
channel: &str,
|
||||
role: &str,
|
||||
permissions: OverrideField,
|
||||
) -> Result<()> {
|
||||
info!("Updating permissions for role {role} in {channel} with {permissions:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn check_channels_exist(&self, _channels: &HashSet<String>) -> Result<bool> {
|
||||
Ok(true)
|
||||
}
|
||||
}
|
||||
30
crates/quark/src/impl/dummy/channels/channel_invite.rs
Normal file
30
crates/quark/src/impl/dummy/channels/channel_invite.rs
Normal file
@@ -0,0 +1,30 @@
|
||||
use crate::models::Invite;
|
||||
use crate::{AbstractChannelInvite, Result};
|
||||
|
||||
use super::super::DummyDb;
|
||||
|
||||
#[async_trait]
|
||||
impl AbstractChannelInvite for DummyDb {
|
||||
async fn fetch_invite(&self, code: &str) -> Result<Invite> {
|
||||
Ok(Invite::Server {
|
||||
code: code.into(),
|
||||
server: "server".into(),
|
||||
creator: "creator".into(),
|
||||
channel: "channel".into(),
|
||||
})
|
||||
}
|
||||
|
||||
async fn insert_invite(&self, invite: &Invite) -> Result<()> {
|
||||
info!("Insert {invite:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn delete_invite(&self, code: &str) -> Result<()> {
|
||||
info!("Delete {code}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn fetch_invites_for_server(&self, server: &str) -> Result<Vec<Invite>> {
|
||||
Ok(vec![self.fetch_invite(server).await.unwrap()])
|
||||
}
|
||||
}
|
||||
31
crates/quark/src/impl/dummy/channels/channel_unread.rs
Normal file
31
crates/quark/src/impl/dummy/channels/channel_unread.rs
Normal file
@@ -0,0 +1,31 @@
|
||||
use crate::models::channel_unread::ChannelUnread;
|
||||
use crate::{AbstractChannelUnread, Result};
|
||||
|
||||
use super::super::DummyDb;
|
||||
|
||||
#[async_trait]
|
||||
impl AbstractChannelUnread for DummyDb {
|
||||
async fn acknowledge_message(&self, channel: &str, user: &str, message: &str) -> Result<()> {
|
||||
info!("Acknowledged {message} in {channel} for {user}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn acknowledge_channels(&self, user: &str, channels: &[String]) -> Result<()> {
|
||||
info!("Acknowledged {channels:?} for {user}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn add_mention_to_unread<'a>(
|
||||
&self,
|
||||
channel: &str,
|
||||
user: &str,
|
||||
ids: &[String],
|
||||
) -> Result<()> {
|
||||
info!("Added mentions for {user} in {channel}: {ids:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn fetch_unreads(&self, _user: &str) -> Result<Vec<ChannelUnread>> {
|
||||
Ok(vec![])
|
||||
}
|
||||
}
|
||||
67
crates/quark/src/impl/dummy/channels/message.rs
Normal file
67
crates/quark/src/impl/dummy/channels/message.rs
Normal file
@@ -0,0 +1,67 @@
|
||||
use crate::models::message::{AppendMessage, Message, MessageSort, PartialMessage};
|
||||
use crate::{AbstractMessage, Result};
|
||||
|
||||
use super::super::DummyDb;
|
||||
|
||||
#[async_trait]
|
||||
impl AbstractMessage for DummyDb {
|
||||
async fn fetch_message(&self, id: &str) -> Result<Message> {
|
||||
Ok(Message {
|
||||
id: id.into(),
|
||||
channel: "channel".into(),
|
||||
author: "author".into(),
|
||||
content: Some("message content".into()),
|
||||
|
||||
..Default::default()
|
||||
})
|
||||
}
|
||||
|
||||
async fn insert_message(&self, message: &Message) -> Result<()> {
|
||||
info!("Insert {message:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn update_message(&self, id: &str, message: &PartialMessage) -> Result<()> {
|
||||
info!("Update {id} with {message:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn append_message(&self, id: &str, append: &AppendMessage) -> Result<()> {
|
||||
info!("Append {id} with {append:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn delete_message(&self, id: &str) -> Result<()> {
|
||||
info!("Delete {id}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn delete_messages(&self, channel: &str, ids: Vec<String>) -> Result<()> {
|
||||
info!("Delete {ids:?} in {channel}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn fetch_messages(
|
||||
&self,
|
||||
channel: &str,
|
||||
_limit: Option<i64>,
|
||||
_before: Option<String>,
|
||||
_after: Option<String>,
|
||||
_sort: Option<MessageSort>,
|
||||
_nearby: Option<String>,
|
||||
) -> Result<Vec<Message>> {
|
||||
Ok(vec![self.fetch_message(channel).await.unwrap()])
|
||||
}
|
||||
|
||||
async fn search_messages(
|
||||
&self,
|
||||
channel: &str,
|
||||
_query: &str,
|
||||
_limit: Option<i64>,
|
||||
_before: Option<String>,
|
||||
_after: Option<String>,
|
||||
_sort: MessageSort,
|
||||
) -> Result<Vec<Message>> {
|
||||
Ok(vec![self.fetch_message(channel).await.unwrap()])
|
||||
}
|
||||
}
|
||||
33
crates/quark/src/impl/dummy/mod.rs
Normal file
33
crates/quark/src/impl/dummy/mod.rs
Normal file
@@ -0,0 +1,33 @@
|
||||
use crate::AbstractDatabase;
|
||||
|
||||
pub mod admin {
|
||||
pub mod migrations;
|
||||
}
|
||||
|
||||
pub mod autumn {
|
||||
pub mod attachment;
|
||||
}
|
||||
|
||||
pub mod channels {
|
||||
pub mod channel;
|
||||
pub mod channel_invite;
|
||||
pub mod channel_unread;
|
||||
pub mod message;
|
||||
}
|
||||
|
||||
pub mod servers {
|
||||
pub mod server;
|
||||
pub mod server_ban;
|
||||
pub mod server_member;
|
||||
}
|
||||
|
||||
pub mod users {
|
||||
pub mod bot;
|
||||
pub mod user;
|
||||
pub mod user_settings;
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct DummyDb;
|
||||
|
||||
impl AbstractDatabase for DummyDb {}
|
||||
78
crates/quark/src/impl/dummy/servers/server.rs
Normal file
78
crates/quark/src/impl/dummy/servers/server.rs
Normal file
@@ -0,0 +1,78 @@
|
||||
use crate::models::server::{FieldsRole, FieldsServer, PartialRole, PartialServer, Role, Server};
|
||||
use crate::{AbstractServer, Result, DEFAULT_PERMISSION_SERVER};
|
||||
|
||||
use super::super::DummyDb;
|
||||
|
||||
#[async_trait]
|
||||
impl AbstractServer for DummyDb {
|
||||
async fn fetch_server(&self, id: &str) -> Result<Server> {
|
||||
Ok(Server {
|
||||
id: id.into(),
|
||||
owner: "owner".into(),
|
||||
|
||||
name: "server".into(),
|
||||
description: Some("server description".into()),
|
||||
|
||||
channels: vec!["channel".into()],
|
||||
categories: None,
|
||||
system_messages: None,
|
||||
|
||||
roles: std::collections::HashMap::new(),
|
||||
default_permissions: *DEFAULT_PERMISSION_SERVER as i64,
|
||||
|
||||
icon: None,
|
||||
banner: None,
|
||||
|
||||
flags: None,
|
||||
|
||||
nsfw: false,
|
||||
analytics: true,
|
||||
discoverable: true,
|
||||
})
|
||||
}
|
||||
|
||||
async fn fetch_servers<'a>(&self, _ids: &'a [String]) -> Result<Vec<Server>> {
|
||||
Ok(vec![self.fetch_server("sus").await.unwrap()])
|
||||
}
|
||||
|
||||
async fn insert_server(&self, server: &Server) -> Result<()> {
|
||||
info!("Insert {server:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn update_server(
|
||||
&self,
|
||||
id: &str,
|
||||
server: &PartialServer,
|
||||
remove: Vec<FieldsServer>,
|
||||
) -> Result<()> {
|
||||
info!("Update {id} with {server:?} and remove {remove:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn delete_server(&self, server: &Server) -> Result<()> {
|
||||
info!("Delete {server:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn insert_role(&self, server_id: &str, role_id: &str, role: &Role) -> Result<()> {
|
||||
info!("Create {role:?} on {server_id} as {role_id}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn update_role(
|
||||
&self,
|
||||
server_id: &str,
|
||||
role_id: &str,
|
||||
role: &PartialRole,
|
||||
remove: Vec<FieldsRole>,
|
||||
) -> Result<()> {
|
||||
info!("Update {role_id} on {server_id} with {role:?} and remove {remove:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn delete_role(&self, server_id: &str, role_id: &str) -> Result<()> {
|
||||
info!("Delete {role_id} on {server_id}");
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
32
crates/quark/src/impl/dummy/servers/server_ban.rs
Normal file
32
crates/quark/src/impl/dummy/servers/server_ban.rs
Normal file
@@ -0,0 +1,32 @@
|
||||
use crate::models::server_member::MemberCompositeKey;
|
||||
use crate::models::ServerBan;
|
||||
use crate::{AbstractServerBan, Result};
|
||||
|
||||
use super::super::DummyDb;
|
||||
|
||||
#[async_trait]
|
||||
impl AbstractServerBan for DummyDb {
|
||||
async fn fetch_ban(&self, server: &str, user: &str) -> Result<ServerBan> {
|
||||
Ok(ServerBan {
|
||||
id: MemberCompositeKey {
|
||||
server: server.into(),
|
||||
user: user.into(),
|
||||
},
|
||||
reason: Some("ban reason".into()),
|
||||
})
|
||||
}
|
||||
|
||||
async fn fetch_bans(&self, server: &str) -> Result<Vec<ServerBan>> {
|
||||
Ok(vec![self.fetch_ban(server, "user").await.unwrap()])
|
||||
}
|
||||
|
||||
async fn insert_ban(&self, ban: &ServerBan) -> Result<()> {
|
||||
info!("Insert {ban:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn delete_ban(&self, id: &MemberCompositeKey) -> Result<()> {
|
||||
info!("Delete {id:?}");
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
59
crates/quark/src/impl/dummy/servers/server_member.rs
Normal file
59
crates/quark/src/impl/dummy/servers/server_member.rs
Normal file
@@ -0,0 +1,59 @@
|
||||
use crate::models::server_member::{FieldsMember, Member, MemberCompositeKey, PartialMember};
|
||||
use crate::{AbstractServerMember, Result};
|
||||
|
||||
use super::super::DummyDb;
|
||||
|
||||
#[async_trait]
|
||||
impl AbstractServerMember for DummyDb {
|
||||
async fn fetch_member(&self, server: &str, user: &str) -> Result<Member> {
|
||||
Ok(Member {
|
||||
id: MemberCompositeKey {
|
||||
server: server.into(),
|
||||
user: user.into(),
|
||||
},
|
||||
nickname: None,
|
||||
avatar: None,
|
||||
roles: None,
|
||||
})
|
||||
}
|
||||
|
||||
async fn insert_member(&self, member: &Member) -> Result<()> {
|
||||
info!("Create {member:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn update_member(
|
||||
&self,
|
||||
id: &MemberCompositeKey,
|
||||
member: &PartialMember,
|
||||
remove: Vec<FieldsMember>,
|
||||
) -> Result<()> {
|
||||
info!("Update {id:?} with {member:?} and remove {remove:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn delete_member(&self, id: &MemberCompositeKey) -> Result<()> {
|
||||
info!("Delete {id:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn fetch_all_members<'a>(&self, server: &str) -> Result<Vec<Member>> {
|
||||
Ok(vec![self.fetch_member(server, "member").await.unwrap()])
|
||||
}
|
||||
|
||||
async fn fetch_all_memberships<'a>(&self, user: &str) -> Result<Vec<Member>> {
|
||||
Ok(vec![self.fetch_member("server", user).await.unwrap()])
|
||||
}
|
||||
|
||||
async fn fetch_members<'a>(&self, server: &str, _ids: &'a [String]) -> Result<Vec<Member>> {
|
||||
Ok(vec![self.fetch_member(server, "member").await.unwrap()])
|
||||
}
|
||||
|
||||
async fn fetch_member_count(&self, _server: &str) -> Result<usize> {
|
||||
Ok(100)
|
||||
}
|
||||
|
||||
async fn fetch_server_count(&self, _user: &str) -> Result<usize> {
|
||||
Ok(5)
|
||||
}
|
||||
}
|
||||
46
crates/quark/src/impl/dummy/users/bot.rs
Normal file
46
crates/quark/src/impl/dummy/users/bot.rs
Normal file
@@ -0,0 +1,46 @@
|
||||
use crate::models::bot::{Bot, FieldsBot, PartialBot};
|
||||
use crate::{AbstractBot, Result};
|
||||
|
||||
use super::super::DummyDb;
|
||||
|
||||
#[async_trait]
|
||||
impl AbstractBot for DummyDb {
|
||||
async fn fetch_bot(&self, id: &str) -> Result<Bot> {
|
||||
Ok(Bot {
|
||||
id: id.into(),
|
||||
owner: "user".into(),
|
||||
token: "token".into(),
|
||||
public: true,
|
||||
analytics: true,
|
||||
discoverable: true,
|
||||
..Default::default()
|
||||
})
|
||||
}
|
||||
|
||||
async fn fetch_bot_by_token(&self, _token: &str) -> Result<Bot> {
|
||||
self.fetch_bot("bot").await
|
||||
}
|
||||
|
||||
async fn insert_bot(&self, bot: &Bot) -> Result<()> {
|
||||
info!("Insert {bot:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn update_bot(&self, id: &str, bot: &PartialBot, remove: Vec<FieldsBot>) -> Result<()> {
|
||||
info!("Update {id} with {bot:?} and remove {remove:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn delete_bot(&self, id: &str) -> Result<()> {
|
||||
info!("Delete {id}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn fetch_bots_by_user(&self, user_id: &str) -> Result<Vec<Bot>> {
|
||||
Ok(vec![self.fetch_bot(user_id).await.unwrap()])
|
||||
}
|
||||
|
||||
async fn get_number_of_bots_by_user(&self, _user_id: &str) -> Result<usize> {
|
||||
Ok(1)
|
||||
}
|
||||
}
|
||||
78
crates/quark/src/impl/dummy/users/user.rs
Normal file
78
crates/quark/src/impl/dummy/users/user.rs
Normal file
@@ -0,0 +1,78 @@
|
||||
use crate::models::user::{FieldsUser, PartialUser, RelationshipStatus, User};
|
||||
use crate::{AbstractUser, Result};
|
||||
|
||||
use super::super::DummyDb;
|
||||
|
||||
#[async_trait]
|
||||
impl AbstractUser for DummyDb {
|
||||
async fn fetch_user(&self, id: &str) -> Result<User> {
|
||||
Ok(User {
|
||||
id: id.into(),
|
||||
username: "username".into(),
|
||||
..Default::default()
|
||||
})
|
||||
}
|
||||
|
||||
async fn fetch_user_by_username(&self, username: &str) -> Result<User> {
|
||||
self.fetch_user(username).await
|
||||
}
|
||||
|
||||
async fn fetch_user_by_token(&self, token: &str) -> Result<User> {
|
||||
self.fetch_user(token).await
|
||||
}
|
||||
|
||||
async fn insert_user(&self, user: &User) -> Result<()> {
|
||||
info!("Insert {:?}", user);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn update_user(
|
||||
&self,
|
||||
id: &str,
|
||||
user: &PartialUser,
|
||||
remove: Vec<FieldsUser>,
|
||||
) -> Result<()> {
|
||||
info!("Update {id} with {user:?} and remove {remove:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn delete_user(&self, id: &str) -> Result<()> {
|
||||
info!("Delete {id}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn fetch_users<'a>(&self, _id: &'a [String]) -> Result<Vec<User>> {
|
||||
Ok(vec![self.fetch_user("id").await.unwrap()])
|
||||
}
|
||||
|
||||
async fn is_username_taken(&self, _username: &str) -> Result<bool> {
|
||||
Ok(false)
|
||||
}
|
||||
|
||||
async fn fetch_mutual_user_ids(&self, _user_a: &str, _user_b: &str) -> Result<Vec<String>> {
|
||||
Ok(vec!["a".into()])
|
||||
}
|
||||
|
||||
async fn fetch_mutual_channel_ids(&self, _user_a: &str, _user_b: &str) -> Result<Vec<String>> {
|
||||
Ok(vec!["b".into()])
|
||||
}
|
||||
|
||||
async fn fetch_mutual_server_ids(&self, _user_a: &str, _user_b: &str) -> Result<Vec<String>> {
|
||||
Ok(vec!["c".into()])
|
||||
}
|
||||
|
||||
async fn set_relationship(
|
||||
&self,
|
||||
user_id: &str,
|
||||
target_id: &str,
|
||||
relationship: &RelationshipStatus,
|
||||
) -> Result<()> {
|
||||
info!("Set relationship from {user_id} to {target_id} as {relationship:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn pull_relationship(&self, user_id: &str, target_id: &str) -> Result<()> {
|
||||
info!("Removing relationship from {user_id} to {target_id}");
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
25
crates/quark/src/impl/dummy/users/user_settings.rs
Normal file
25
crates/quark/src/impl/dummy/users/user_settings.rs
Normal file
@@ -0,0 +1,25 @@
|
||||
use crate::models::UserSettings;
|
||||
use crate::{AbstractUserSettings, Result};
|
||||
|
||||
use super::super::DummyDb;
|
||||
|
||||
#[async_trait]
|
||||
impl AbstractUserSettings for DummyDb {
|
||||
async fn fetch_user_settings(
|
||||
&'_ self,
|
||||
_id: &str,
|
||||
_filter: &'_ [String],
|
||||
) -> Result<UserSettings> {
|
||||
Ok(std::collections::HashMap::new())
|
||||
}
|
||||
|
||||
async fn set_user_settings(&self, id: &str, settings: &UserSettings) -> Result<()> {
|
||||
info!("Set {id} to {settings:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn delete_user_settings(&self, id: &str) -> Result<()> {
|
||||
info!("Delete {id}");
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user