chore(monorepo): delta, january, quark

This commit is contained in:
Paul Makles
2022-06-02 00:04:22 +01:00
parent 5d8432e267
commit 2ce610e1e7
232 changed files with 18094 additions and 554 deletions

View 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(())
}
}

View 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(())
}
}

View 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)
}
}

View 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()])
}
}

View 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![])
}
}

View 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()])
}
}

View 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 {}

View 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(())
}
}

View 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(())
}
}

View 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)
}
}

View 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)
}
}

View 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(())
}
}

View 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(())
}
}