feat(gateway): split off cache into separate package, rename package to 'gateway'
This commit is contained in:
1489
myriad_rs/Cargo.lock
generated
Normal file
1489
myriad_rs/Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
16
myriad_rs/Cargo.toml
Normal file
16
myriad_rs/Cargo.toml
Normal file
@@ -0,0 +1,16 @@
|
||||
[package]
|
||||
name = "myriad"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1"
|
||||
|
||||
prost = "0.10.3"
|
||||
twilight-gateway = "0.10.0"
|
||||
redis = { version = "0.21.5", features = ["aio", "tokio-comp"] }
|
||||
|
||||
[build-dependencies]
|
||||
prost-build = "0.10.3"
|
6
myriad_rs/build.rs
Normal file
6
myriad_rs/build.rs
Normal file
@@ -0,0 +1,6 @@
|
||||
use std::io::Result;
|
||||
|
||||
fn main() -> Result<()> {
|
||||
prost_build::compile_protos(&["../proto/discord_cache.proto"], &["../proto/"])?;
|
||||
Ok(())
|
||||
}
|
78
myriad_rs/src/cache.rs
Normal file
78
myriad_rs/src/cache.rs
Normal file
@@ -0,0 +1,78 @@
|
||||
use twilight_gateway::Event;
|
||||
|
||||
include!(concat!(env!("OUT_DIR"), "/myriad.cache.rs"));
|
||||
|
||||
pub async fn handle_event<'a>(
|
||||
event: Event,
|
||||
rconn: redis::Client
|
||||
) -> anyhow::Result<()> {
|
||||
match event {
|
||||
// todo: save private channels (see SaveDMChannelStub / PrivateChannelService)
|
||||
// todo: save user profiles for some reason (from message create, etc)
|
||||
// todo(dotnet): remove relying on cache.OwnUserId
|
||||
|
||||
Event::GuildCreate(guild) => {
|
||||
// save guild itself
|
||||
// save all roles in guild
|
||||
// save guild-role map
|
||||
// save all channels in guild
|
||||
// save all threads in guild (as channels lol)
|
||||
// save guild-channel map
|
||||
// save self guild member
|
||||
|
||||
// c# code also saves users in guildCreate.Members, but I'm pretty sure that doesn't have anything now because intents
|
||||
}
|
||||
Event::GuildUpdate(guild) => {
|
||||
// save guild itself
|
||||
}
|
||||
Event::GuildDelete(guild) => {
|
||||
// delete guild
|
||||
// this probably should also delete all channels/roles/etc of the guild
|
||||
}
|
||||
Event::MemberUpdate(member) => {
|
||||
// save self guild member
|
||||
}
|
||||
Event::ChannelCreate(channel) => {
|
||||
// save channel
|
||||
// update guild-channel map
|
||||
}
|
||||
Event::ChannelUpdate(channel) => {
|
||||
// save channel
|
||||
}
|
||||
Event::ChannelDelete(channel) => {
|
||||
// delete channel
|
||||
// update guild-channel map
|
||||
}
|
||||
Event::RoleCreate(role) => {
|
||||
// save role
|
||||
// update guild-role map
|
||||
}
|
||||
Event::RoleUpdate(role) => {
|
||||
// save role
|
||||
}
|
||||
Event::RoleDelete(role) => {
|
||||
// delete role
|
||||
// update guild-role map
|
||||
}
|
||||
Event::ThreadCreate(thread) => {
|
||||
// save channel
|
||||
// update guild-channel map
|
||||
}
|
||||
Event::ThreadUpdate(thread) => {
|
||||
// save thread
|
||||
}
|
||||
Event::ThreadDelete(thread) => {
|
||||
// delete channel
|
||||
// update guild-channel map
|
||||
}
|
||||
Event::ThreadListSync(tls) => {
|
||||
// save channels
|
||||
}
|
||||
Event::MessageCreate(message) => {
|
||||
// save last message of channel
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
1
myriad_rs/src/lib.rs
Normal file
1
myriad_rs/src/lib.rs
Normal file
@@ -0,0 +1 @@
|
||||
pub mod cache;
|
Reference in New Issue
Block a user