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