feat(gateway): split off cache into separate package, rename package to 'gateway'

This commit is contained in:
spiral
2022-05-10 07:04:33 -04:00
parent 433603feaa
commit abb01aaf2c
12 changed files with 1733 additions and 33 deletions

229
gateway/Cargo.lock generated
View File

@@ -155,6 +155,15 @@ dependencies = [
"winapi",
]
[[package]]
name = "cmake"
version = "0.1.48"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8ad8cef104ac57b68b89df3208164d228503abbdce70f6880ffa3d970e7443a"
dependencies = [
"cc",
]
[[package]]
name = "combine"
version = "4.6.3"
@@ -293,12 +302,33 @@ version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0"
[[package]]
name = "either"
version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
[[package]]
name = "fallible-iterator"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
[[package]]
name = "fastrand"
version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf"
dependencies = [
"instant",
]
[[package]]
name = "fixedbitset"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "279fb028e20b3c4c320317955b77c5e0c9701f05a1d309905d6fc702cdc5053e"
[[package]]
name = "flate2"
version = "1.0.22"
@@ -417,6 +447,33 @@ dependencies = [
"slab",
]
[[package]]
name = "gateway"
version = "0.1.0"
dependencies = [
"anyhow",
"config",
"deadpool",
"deadpool-postgres",
"futures",
"lazy_static",
"libc",
"myriad",
"postgres-types",
"procfs",
"redis",
"serde",
"tokio",
"tokio-postgres",
"tokio-stream",
"tracing",
"tracing-subscriber",
"twilight-gateway",
"twilight-gateway-queue",
"twilight-http",
"twilight-model",
]
[[package]]
name = "generic-array"
version = "0.14.4"
@@ -463,6 +520,12 @@ version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
[[package]]
name = "heck"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
[[package]]
name = "hermit-abi"
version = "0.1.20"
@@ -590,6 +653,15 @@ dependencies = [
"cfg-if",
]
[[package]]
name = "itertools"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"
dependencies = [
"either",
]
[[package]]
name = "itoa"
version = "0.4.8"
@@ -724,6 +796,23 @@ dependencies = [
"winapi",
]
[[package]]
name = "multimap"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
[[package]]
name = "myriad"
version = "0.1.0"
dependencies = [
"anyhow",
"prost",
"prost-build",
"redis",
"twilight-gateway",
]
[[package]]
name = "nom"
version = "5.1.2"
@@ -831,6 +920,16 @@ version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
[[package]]
name = "petgraph"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4a13a2fa9d0b63e5f22328828741e523766fff0ee9e779316902290dff3f824f"
dependencies = [
"fixedbitset",
"indexmap",
]
[[package]]
name = "phf"
version = "0.10.0"
@@ -867,32 +966,6 @@ version = "0.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d1a3ea4f0dd7f1f3e512cf97bf100819aa547f36a6eccac8dbaae839eb92363e"
[[package]]
name = "pluralkit"
version = "0.1.0"
dependencies = [
"anyhow",
"config",
"deadpool",
"deadpool-postgres",
"futures",
"lazy_static",
"libc",
"postgres-types",
"procfs",
"redis",
"serde",
"tokio",
"tokio-postgres",
"tokio-stream",
"tracing",
"tracing-subscriber",
"twilight-gateway",
"twilight-gateway-queue",
"twilight-http",
"twilight-model",
]
[[package]]
name = "postgres-derive"
version = "0.4.1"
@@ -967,6 +1040,61 @@ dependencies = [
"libc",
]
[[package]]
name = "prost"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc03e116981ff7d8da8e5c220e374587b98d294af7ba7dd7fda761158f00086f"
dependencies = [
"bytes",
"prost-derive",
]
[[package]]
name = "prost-build"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "65a1118354442de7feb8a2a76f3d80ef01426bd45542c8c1fdffca41a758f846"
dependencies = [
"bytes",
"cfg-if",
"cmake",
"heck",
"itertools",
"lazy_static",
"log",
"multimap",
"petgraph",
"prost",
"prost-types",
"regex",
"tempfile",
"which",
]
[[package]]
name = "prost-derive"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b670f45da57fb8542ebdbb6105a925fe571b67f9e7ed9f47a06a84e72b4e7cc"
dependencies = [
"anyhow",
"itertools",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "prost-types"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d0a014229361011dc8e69c8a1ec6c2e8d0f2af7c91e3ea3f5b2170298461e68"
dependencies = [
"bytes",
"prost",
]
[[package]]
name = "quote"
version = "1.0.10"
@@ -1045,6 +1173,30 @@ dependencies = [
"bitflags",
]
[[package]]
name = "regex"
version = "1.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286"
dependencies = [
"regex-syntax",
]
[[package]]
name = "regex-syntax"
version = "0.6.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
[[package]]
name = "remove_dir_all"
version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
dependencies = [
"winapi",
]
[[package]]
name = "ring"
version = "0.16.20"
@@ -1324,6 +1476,20 @@ dependencies = [
"unicode-xid",
]
[[package]]
name = "tempfile"
version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
dependencies = [
"cfg-if",
"fastrand",
"libc",
"redox_syscall",
"remove_dir_all",
"winapi",
]
[[package]]
name = "thiserror"
version = "1.0.30"
@@ -1831,6 +1997,17 @@ dependencies = [
"untrusted",
]
[[package]]
name = "which"
version = "4.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24ae"
dependencies = [
"either",
"lazy_static",
"libc",
]
[[package]]
name = "winapi"
version = "0.3.9"

View File

@@ -1,5 +1,5 @@
[package]
name = "pluralkit"
name = "gateway"
version = "0.1.0"
edition = "2021"
@@ -31,3 +31,5 @@ postgres-types = { version = "0.2", features = ["derive"] }
tokio-postgres = { version = "0.7", features = ["with-serde_json-1", "with-uuid-0_8"] }
redis = { version = "0.21.5", features = ["aio", "tokio-comp"] }
myriad = { path = "../myriad_rs" }

View File

@@ -1,73 +0,0 @@
use twilight_gateway::Event;
pub async fn handle_event<'a>(
event: Event,
rconn: redis::Client
) -> anyhow::Result<()> {
match event {
// todo: SaveDMChannelStub (?)
// 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
}
_ => {}
}
Ok(())
}

View File

@@ -7,8 +7,6 @@ use tracing::info;
use twilight_gateway::Event;
use twilight_http::Client as HttpClient;
use crate::cache;
lazy_static::lazy_static! {
static ref ALLOWED_EVENTS: Vec<&'static str> = [
"INTERACTION_CREATE",
@@ -27,7 +25,7 @@ pub async fn handle_event<'a>(
_db: Pool,
rconn: redis::Client
) -> anyhow::Result<()> {
cache::handle_event(event.clone(), rconn.clone()).await?;
myriad::cache::handle_event(event.clone(), rconn.clone()).await?;
match event {
Event::GatewayInvalidateSession(resumable) => {

View File

@@ -9,7 +9,6 @@ use twilight_gateway::{
};
use twilight_http::Client as HttpClient;
mod cache;
mod config;
mod evt;
mod db;