From c62bb41cd4e4824d258e8c7b1a4ff8121b6eada2 Mon Sep 17 00:00:00 2001 From: CanadianBaconBoi Date: Mon, 23 Feb 2026 16:22:26 +0100 Subject: [PATCH] Add User Handling to CoveDb and.. - Add Delete SqlPart - Cleanup imports --- Cargo.lock | 2 +- bin-test/Cargo.toml | 1 - bin-test/src/main.rs | 109 +++++++++--------- cove-db/Cargo.toml | 1 + cove-db/cove-db-macros/src/lib.rs | 33 +++++- cove-db/src/lib.rs | 2 + cove-db/src/part/delete.rs | 21 ++++ cove-db/src/part/mod.rs | 1 + cove-db/src/part/sql_where.rs | 3 + cove-db/src/query/mod.rs | 49 +++++++- cove-db/src/query/text.rs | 59 ---------- cove-db/src/query/user.rs | 91 +++++++++++++++ cove-db/src/rows/mod.rs | 38 +++++- cove-db/src/rows/user.rs | 2 +- cove-db/src/types/user_status.rs | 2 +- cove-net/server/src/lib.rs | 2 +- .../src/message/handlers/account/login.rs | 6 +- .../src/message/handlers/account/register.rs | 6 +- .../src/message/handlers/base/handler.rs | 4 +- .../src/message/handlers/base/middleware.rs | 4 +- cove-net/server/src/message/handlers/mod.rs | 6 +- .../src/message/handlers/text/attachment.rs | 6 +- .../src/message/handlers/text/reaction.rs | 6 +- .../server/src/message/handlers/text/text.rs | 6 +- .../server/src/message/middleware/auth.rs | 5 +- 25 files changed, 312 insertions(+), 153 deletions(-) create mode 100644 cove-db/src/part/delete.rs delete mode 100644 cove-db/src/query/text.rs create mode 100644 cove-db/src/query/user.rs diff --git a/Cargo.lock b/Cargo.lock index d579358..7c98ab8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -75,7 +75,6 @@ dependencies = [ "cove-db", "cove-net-common", "cove-net-server", - "scc", "sqlx", "tokio", ] @@ -191,6 +190,7 @@ name = "cove-db" version = "0.1.0" dependencies = [ "anyhow", + "async-trait", "cove-db-macros", "cove-net-common", "serde_json", diff --git a/bin-test/Cargo.toml b/bin-test/Cargo.toml index 1c4c886..827d10d 100644 --- a/bin-test/Cargo.toml +++ b/bin-test/Cargo.toml @@ -10,4 +10,3 @@ tokio.workspace = true cove-db.workspace = true sqlx.workspace = true anyhow.workspace = true -scc.workspace = true \ No newline at end of file diff --git a/bin-test/src/main.rs b/bin-test/src/main.rs index 54b309c..1ff4323 100644 --- a/bin-test/src/main.rs +++ b/bin-test/src/main.rs @@ -2,14 +2,11 @@ use cove_net_server::message::middleware::auth::AuthTokenMiddleware; use std::net::{IpAddr, Ipv4Addr}; use std::sync::{Arc}; use std::time::Duration; -use sqlx::{Execute, Executor}; -use sqlx::postgres::PgQueryResult; use sqlx::types::time::OffsetDateTime; -use cove_db::{CoveDB, CoveDBImpl}; -use cove_db::part::{BindQueryBuilder, SqlPart}; -use cove_db::part::condition::ConditionType; -use cove_db::rows::{InsertableRow, SelectableRow, TableRow, WhereRow}; -use cove_db::rows::user::{PartialUserRow, UserRow}; +use cove_db::CoveDB; +use cove_db::query::user::UserQueries; +use cove_db::rows::PartialTableRow; +use cove_db::rows::user::UserRow; use cove_db::types::user_status::UserStatus; use cove_net_common::id::message_type::MessageType; use cove_net_common::id::SnowflakeID; @@ -27,55 +24,59 @@ async fn main() -> Result<(), anyhow::Error> { db.run_migrations().await?; db.run_system_migrations().await?; - // let user_row = UserRow { - // id: SnowflakeID::new_random_hex_loc(MessageType::User, "beefcafe")?, - // username: "CanadianBacon".to_string(), - // discriminator: "0001".to_string(), - // avatar_hash: None, - // email: "bc.bacon.bits@gmail.com".to_string(), - // email_verified: true, - // password_hash: "1802vgu12890n7b489127".to_string(), - // mfa_enabled: false, - // mfa_secret: None, - // status: UserStatus::Online, - // public_flags: 0, - // locale: "en-US".to_string(), - // premium_since: Some(OffsetDateTime::now_utc() + Duration::from_hours(1)), - // premium_end: Some(OffsetDateTime::now_utc() + Duration::from_hours(24)), - // bot: false, - // bot_oauth_scopes: Default::default(), - // preferences: Default::default(), - // created_at: OffsetDateTime::now_utc(), - // updated_at: OffsetDateTime::now_utc(), - // }; - // - // let mut query_builder = BindQueryBuilder::new(); - // user_row.insert().encode(&mut query_builder)?; - // - // let query = query_builder.to_query(); - // let query = user_row.bind(query)?; - // - // let res = db.run_query::(query.sql_query).await?; - // println!("{} rows affected", res.rows_affected()); - - let request_row: ::PartialRow = PartialUserRow { - username: Some("CanadianBacon".to_string()), - ..Default::default() + let user_row = UserRow { + id: SnowflakeID::new_random_hex_loc(MessageType::User, "beefcafe")?, + username: "CanadianBacon".to_string(), + discriminator: "0001".to_string(), + avatar_hash: None, + email: "bc.bacon.bits@gmail.com".to_string(), + email_verified: true, + password_hash: "1802vgu12890n7b489127".to_string(), + mfa_enabled: false, + mfa_secret: None, + status: UserStatus::Online, + public_flags: 0, + locale: "en-US".to_string(), + premium_since: Some(OffsetDateTime::now_utc() + Duration::from_hours(1)), + premium_end: Some(OffsetDateTime::now_utc() + Duration::from_hours(24)), + bot: false, + bot_oauth_scopes: Default::default(), + preferences: Default::default(), + created_at: OffsetDateTime::now_utc(), + updated_at: OffsetDateTime::now_utc(), }; - let mut query_builder = BindQueryBuilder::new(); - request_row.select(vec!["id", "username"]).encode(&mut query_builder)?; - let sql_where = request_row.wheres(|w|{ - w.cond_and::("username", ConditionType::Equal(false)) - })?; - sql_where.encode(&mut query_builder)?; - - let query = request_row.bind(sql_where, query_builder.to_query())?; - - println!("{}", query.sql_query.sql()); - let out_partial_row: ::PartialRow = db.get_pool().fetch_one(query.sql_query).await?.into(); - - println!("{:?}, {:?}, {:?}", out_partial_row.id, out_partial_row.username, out_partial_row.email); + match db.create_user(user_row).await { + Ok(result) => { + println!("Create User: {} rows affected", result.result().as_ref().unwrap().rows_affected()); + match db.get_user_by_name_and_discrim("CanadianBacon", "0001").await { + Ok(partial_user) => { + match partial_user.value().get_full(&db).await { + Ok(full_user) => { + match db.delete_user_by_id(full_user.id).await { + Ok(result) => { + println!("Delete User: {} rows affected", result.result().as_ref().unwrap().rows_affected()); + println!("{:?}", result.value()); + } + Err(err) => { + println!("Failed to delete user: {}", err); + } + } + } + Err(err) => { + println!("Failed to get full user: {}", err); + } + } + } + Err(err) => { + println!("Failed to get user: {}", err); + } + } + } + Err(err) => { + println!("Failed to create user: {:?}", err); + } + } http_testing(db).await?; diff --git a/cove-db/Cargo.toml b/cove-db/Cargo.toml index 3a36aee..8f7932a 100644 --- a/cove-db/Cargo.toml +++ b/cove-db/Cargo.toml @@ -8,5 +8,6 @@ sqlx.workspace = true anyhow.workspace = true serde_json.workspace = true cove-db-macros.workspace = true +async-trait.workspace = true cove-net-common.workspace = true \ No newline at end of file diff --git a/cove-db/cove-db-macros/src/lib.rs b/cove-db/cove-db-macros/src/lib.rs index 4166e02..9014b8f 100644 --- a/cove-db/cove-db-macros/src/lib.rs +++ b/cove-db/cove-db-macros/src/lib.rs @@ -148,6 +148,10 @@ fn impl_derive_table_row(ast: DeriveInput) -> TokenStream { impl crate::rows::SelectableRow for #partial_name {} }; + let impl_deletable_row = quote! { + impl crate::rows::DeletableRow for #partial_name {} + }; + let impl_where_row = { let match_body = { let mut ret = quote!(); @@ -163,7 +167,26 @@ fn impl_derive_table_row(ast: DeriveInput) -> TokenStream { ret }; + let where_all_body = { + let mut ret = quote!(); + for field in fields.named.iter() { + let name = field.ident.as_ref().unwrap(); + let quoted_name = format!("{}", name); + let ty = &field.ty; + ret.extend( + quote! { + if self.#name.is_some() { + wheres = wheres.cond_and::<#ty>(#quoted_name, ConditionType::Equal(false)).unwrap(); + } + } + ) + } + ret + }; + quote! { + use crate::part::condition::ConditionType; + use crate::part::sql_where::SqlWhere; impl crate::rows::WhereRow for #partial_name { fn bind<'a>(&'a self, wheres: crate::part::sql_where::SqlWhere, query: crate::part::BindQuery<'a>) -> Result, Self::Error> { let mut query = query; @@ -175,9 +198,13 @@ fn impl_derive_table_row(ast: DeriveInput) -> TokenStream { } Ok(query) } + + fn where_all(&self) -> SqlWhere { + let mut wheres = SqlWhere::new(); + #where_all_body + wheres + } } - - } }; @@ -247,7 +274,9 @@ fn impl_derive_table_row(ast: DeriveInput) -> TokenStream { ret.extend(struct_partial_row); ret.extend(impl_table_row); ret.extend(impl_partial_table_row); + // ret.extend(impl_deletable_row); ret.extend(impl_insertable_row); + ret.extend(impl_deletable_row); ret.extend(impl_selectable_row); ret.extend(impl_where_row); ret.extend(impl_try_from_pgrow_for_full); diff --git a/cove-db/src/lib.rs b/cove-db/src/lib.rs index ef85b42..fce99e4 100644 --- a/cove-db/src/lib.rs +++ b/cove-db/src/lib.rs @@ -4,6 +4,7 @@ pub mod part; pub mod types; use anyhow::Context; +use async_trait::async_trait; use sqlx::{PgConnection, PgPool, Postgres}; use sqlx::migrate::Migrator; use sqlx::postgres::{PgArguments, PgConnectOptions, PgPoolOptions, PgQueryResult}; @@ -65,6 +66,7 @@ impl CoveDBImpl for CoveDB { } } +#[async_trait] pub trait CoveDBImpl { fn get_pool(&self) -> &PgPool; diff --git a/cove-db/src/part/delete.rs b/cove-db/src/part/delete.rs new file mode 100644 index 0000000..bb1de03 --- /dev/null +++ b/cove-db/src/part/delete.rs @@ -0,0 +1,21 @@ +use crate::part::{BindQueryBuilder, SqlPart}; + +pub struct SqlDelete { + table_name: String +} + +impl SqlDelete { + pub fn with_table(table_name: impl Into) -> SqlDelete { + SqlDelete {table_name: table_name.into()} + } +} + +impl SqlPart for SqlDelete { + fn encode(&self, query_builder: &mut BindQueryBuilder) -> Result<(), anyhow::Error> { + query_builder.push("DELETE FROM "); + query_builder.push(&self.table_name); + query_builder.push(" "); + + Ok(()) + } +} \ No newline at end of file diff --git a/cove-db/src/part/mod.rs b/cove-db/src/part/mod.rs index 9f2f2b1..4ba27f8 100644 --- a/cove-db/src/part/mod.rs +++ b/cove-db/src/part/mod.rs @@ -10,6 +10,7 @@ pub mod condition; pub mod select; pub mod sql_where; pub mod insert; +pub mod delete; pub trait SqlPart { fn encode(&self, arg_buffer: &mut BindQueryBuilder) -> Result<(), anyhow::Error>; diff --git a/cove-db/src/part/sql_where.rs b/cove-db/src/part/sql_where.rs index ae93b6a..9f9d547 100644 --- a/cove-db/src/part/sql_where.rs +++ b/cove-db/src/part/sql_where.rs @@ -4,6 +4,9 @@ use sqlx::{Encode, Postgres, Type}; use crate::part::condition::{ConditionJoin, ConditionType, SqlCondition}; use crate::part::{BindQueryBuilder, SqlPart}; +unsafe impl Send for SqlWhere {} +unsafe impl Sync for SqlWhere {} + pub struct SqlWhere { selected_scope: Arc>, pub indexed_placeholders: Vec<(usize, String)>, diff --git a/cove-db/src/query/mod.rs b/cove-db/src/query/mod.rs index 71b75d5..4cf9a16 100644 --- a/cove-db/src/query/mod.rs +++ b/cove-db/src/query/mod.rs @@ -1 +1,48 @@ -pub mod text; \ No newline at end of file +use sqlx::postgres::PgQueryResult; +use crate::rows::{PartialTableRow, TableRow}; + +pub mod user; + +pub struct PartialQueryResult { + value: T, + pg_query_result: Option +} + +impl PartialQueryResult { + pub fn new(value: T, pg_query_result: Option) -> Self { + PartialQueryResult { + value, + pg_query_result + } + } + + pub fn value(&self) -> &T { + &self.value + } + + pub fn result(&self) -> &Option { + &self.pg_query_result + } +} + +pub struct QueryResult { + value: T, + pg_query_result: Option +} + +impl QueryResult { + pub fn new(value: T, pg_query_result: Option) -> Self { + QueryResult { + value, + pg_query_result + } + } + + pub fn value(&self) -> &T { + &self.value + } + + pub fn result(&self) -> &Option { + &self.pg_query_result + } +} \ No newline at end of file diff --git a/cove-db/src/query/text.rs b/cove-db/src/query/text.rs deleted file mode 100644 index ae6eb84..0000000 --- a/cove-db/src/query/text.rs +++ /dev/null @@ -1,59 +0,0 @@ -use anyhow::{Error}; -use sqlx::{Execute}; -use sqlx::postgres::{ PgQueryResult}; -use cove_net_common::id::message_type::MessageType; -use cove_net_common::id::SnowflakeID; -use cove_net_common::id::types::text::TextMessageType; -use cove_net_common::message::c2s::text::text::{TextEmbed, TextMessage}; -use crate::{CoveDB, CoveDBImpl}; -use crate::part::{BindQueryBuilder, SqlPart}; -use crate::part::insert::SqlInsert; - -pub trait TextQueries: CoveDBImpl + Send + Sync { - async fn create_message( - &self, user_id: SnowflakeID, - message: TextMessage, mentions: Option>, mention_everyone: bool, - message_type: &TextMessageType - ) -> Result { - println!("creating message"); - let message_id = SnowflakeID::new_random_hex_loc( - MessageType::Text(TextMessageType::Text), "beefcafe" - )?; - - let mut query_builder = BindQueryBuilder::new(); - - SqlInsert::with_table("messages") - .col::("id") - .col::("channel_id") - .col::("guild_id") - .col::("author_id") - .col::("content") - .col::("tts") - .col::("mention_everyone") - .col::("message_type") - .opt_arr_col::("mentions") - .opt_arr_col::("embeds") - .opt_arr_col::("attachments") - .encode(&mut query_builder)?; - - let query = query_builder.to_query().build() - .bind(message_id) - .bind(message.channel_id) - .bind(message.guild_id) - .bind(user_id) - .bind(message.content) - .bind(message.tts) - .bind(mention_everyone) - .bind(message_type) - .bind(mentions) - .bind(message.embeds) - .bind(message.attachments); - - println!("{:?}", query.sql()); - let res: PgQueryResult = self.run_query(query).await?; - println!("Rows Affected: {}", res.rows_affected()); - Ok(res) - } -} - -impl TextQueries for CoveDB {} \ No newline at end of file diff --git a/cove-db/src/query/user.rs b/cove-db/src/query/user.rs new file mode 100644 index 0000000..f89ae71 --- /dev/null +++ b/cove-db/src/query/user.rs @@ -0,0 +1,91 @@ +use async_trait::async_trait; +use sqlx::Executor; +use sqlx::postgres::PgQueryResult; +use cove_net_common::id::SnowflakeID; +use crate::{CoveDB, CoveDBImpl}; +use crate::part::{BindQueryBuilder, SqlPart}; +use crate::query::{PartialQueryResult, QueryResult}; +use crate::rows::{DeletableRow, InsertableRow, SelectableRow, TableRow, WhereRow}; +use crate::rows::user::{PartialUserRow, UserRow}; + +#[async_trait] +pub trait UserQueries: CoveDBImpl { + async fn create_user(&self, user_row: UserRow) -> Result, anyhow::Error> { + let mut query_builder = BindQueryBuilder::new(); + user_row.insert().encode(&mut query_builder)?; + + let query = query_builder.to_query(); + let query = user_row.bind(query)?; + + let res = self.run_query::(query.sql_query).await?; + + Ok(QueryResult::new(user_row, Some(res))) + } + + async fn get_user_by_name_and_discrim(&self, name: impl Into + Send, discriminator: impl Into + Send) -> Result, anyhow::Error> { + let user_request_row = PartialUserRow { + username: Some(name.into()), + discriminator: Some(discriminator.into()), + ..Default::default() + }; + + let mut query_builder = BindQueryBuilder::new(); + user_request_row.select(vec!["id", "username", "discriminator"]).encode(&mut query_builder)?; + let sql_where = user_request_row.where_all(); + sql_where.encode(&mut query_builder)?; + + let query = user_request_row.bind(sql_where, query_builder.to_query())?; + + let out_partial_row: ::PartialRow = self.get_pool().fetch_one(query.sql_query).await?.into(); + + Ok(PartialQueryResult::new(out_partial_row, None)) + } + + async fn get_user_by_id(&self, user_id: SnowflakeID) -> Result, anyhow::Error> { + let user_request_row = PartialUserRow { + id: Some(user_id), + ..Default::default() + }; + + let mut query_builder = BindQueryBuilder::new(); + user_request_row.select(vec!["id", "username", "discriminator"]).encode(&mut query_builder)?; + let sql_where = user_request_row.where_all(); + sql_where.encode(&mut query_builder)?; + + let query = user_request_row.bind(sql_where, query_builder.to_query())?; + + let out_partial_row: ::PartialRow = self.get_pool().fetch_one(query.sql_query).await?.into(); + + Ok(PartialQueryResult::new(out_partial_row, None)) + } + + async fn delete_user_by_id(&self, user_id: SnowflakeID) -> Result, anyhow::Error> { + let user_delete_row = PartialUserRow { + id: Some(user_id), + ..Default::default() + }; + + let mut query_builder = BindQueryBuilder::new(); + user_delete_row.select(vec!["*"]).encode(&mut query_builder)?; + let sql_where = user_delete_row.where_all(); + sql_where.encode(&mut query_builder)?; + let query = user_delete_row.bind(sql_where, query_builder.to_query())?; + + let out_val: UserRow = self.get_pool().fetch_one(query.sql_query).await?.try_into()?; + + let mut query_builder = BindQueryBuilder::new(); + + user_delete_row.delete().encode(&mut query_builder)?; + let sql_where = user_delete_row.where_all(); + sql_where.encode(&mut query_builder)?; + + let query = user_delete_row.bind(sql_where, query_builder.to_query())?; + + let res = self.run_query::(query.sql_query).await?; + + Ok(QueryResult::new(out_val, Some(res))) + } +} + +#[async_trait] +impl UserQueries for CoveDB {} \ No newline at end of file diff --git a/cove-db/src/rows/mod.rs b/cove-db/src/rows/mod.rs index 22b97fb..e995d36 100644 --- a/cove-db/src/rows/mod.rs +++ b/cove-db/src/rows/mod.rs @@ -1,4 +1,9 @@ -use crate::part::BindQuery; +use async_trait::async_trait; +use sqlx::Executor; +use sqlx::postgres::PgRow; +use crate::{CoveDB, CoveDBImpl}; +use crate::part::{BindQuery, BindQueryBuilder, SqlPart}; +use crate::part::delete::SqlDelete; use crate::part::insert::SqlInsert; use crate::part::select::SqlSelect; use crate::part::sql_where::SqlWhere; @@ -17,12 +22,33 @@ pub trait TableRow { fn get_table_name() -> &'static str; } +#[async_trait] pub trait PartialTableRow { type Error; type FullTableRow: TableRow; fn get_table_name() -> &'static str { Self::FullTableRow::get_table_name() } + + async fn get_full(&self, db: &CoveDB) -> Result where + Self: SelectableRow + WhereRow, + ::Error: From, + Self::FullTableRow: TryFrom, + <::FullTableRow as TryFrom>::Error: Into + { + let mut query_builder = BindQueryBuilder::new(); + self.select(vec!["*"]).encode(&mut query_builder)?; + let sql_where = self.where_all(); + sql_where.encode(&mut query_builder)?; + + let query = self.bind(sql_where, query_builder.to_query())?; + + let out_full_row: Self::FullTableRow = db.get_pool() + .fetch_one(query.sql_query).await.map_err(|e|e.into())? + .try_into().map_err(|e: >::Error | e.into())?; + + Ok(out_full_row) + } } pub trait InsertableRow: TableRow { @@ -40,12 +66,20 @@ pub trait SelectableRow: PartialTableRow { } } +pub trait DeletableRow: PartialTableRow { + fn delete(&'_ self) -> SqlDelete { + SqlDelete::with_table(Self::get_table_name()) + } +} + pub trait WhereRow: PartialTableRow { - fn wheres(&'_ self, where_fn: impl Fn(SqlWhere) -> Result) -> Result { + fn wheres(&'_ self, where_fn: impl Fn(SqlWhere) -> Result + Send + Sync) -> Result { let wheres = SqlWhere::new(); let wheres = where_fn(wheres)?; Ok(wheres) } + fn where_all(&'_ self) -> SqlWhere; + fn bind<'a>(&'a self, wheres: SqlWhere, query: BindQuery<'a>) -> Result, Self::Error>; } \ No newline at end of file diff --git a/cove-db/src/rows/user.rs b/cove-db/src/rows/user.rs index e925bef..eb4ded8 100644 --- a/cove-db/src/rows/user.rs +++ b/cove-db/src/rows/user.rs @@ -4,7 +4,7 @@ use cove_db_macros::DeriveTableRow; use cove_net_common::id::SnowflakeID; use crate::types::user_status::UserStatus; -#[derive(DeriveTableRow)] +#[derive(DeriveTableRow, Debug)] #[table_name("users")] pub struct UserRow { pub id: SnowflakeID, diff --git a/cove-db/src/types/user_status.rs b/cove-db/src/types/user_status.rs index e8bb12d..9ec7a1b 100644 --- a/cove-db/src/types/user_status.rs +++ b/cove-db/src/types/user_status.rs @@ -3,7 +3,7 @@ use sqlx::encode::IsNull; use sqlx::error::BoxDynError; use sqlx::postgres::PgTypeInfo; -#[derive(Clone)] +#[derive(Clone, Debug)] pub enum UserStatus { Online, Idle, diff --git a/cove-net/server/src/lib.rs b/cove-net/server/src/lib.rs index 5b0e1fb..eb7bec5 100644 --- a/cove-net/server/src/lib.rs +++ b/cove-net/server/src/lib.rs @@ -1,7 +1,7 @@ pub mod message; use cove_db::CoveDB; -use std::any::{Any, TypeId}; +use std::any::Any; use std::collections::VecDeque; use std::net::{IpAddr, SocketAddr}; use http_body_util::{BodyExt, Full}; diff --git a/cove-net/server/src/message/handlers/account/login.rs b/cove-net/server/src/message/handlers/account/login.rs index b10c37a..932b1ca 100644 --- a/cove-net/server/src/message/handlers/account/login.rs +++ b/cove-net/server/src/message/handlers/account/login.rs @@ -1,11 +1,9 @@ -use hyper::body::Buf; -use http_body_util::BodyExt; use std::collections::VecDeque; use anyhow::Error; use async_trait::async_trait; use http_body_util::Full; -use hyper::body::{Bytes, Incoming}; -use hyper::{Request, Response}; +use hyper::body::Bytes; +use hyper::Response; use hyper::http::request::Parts; use cove_net_common::message::c2s::account::login::LoginMessage; use cove_net_common::message::c2s::ClientToServerMessage; diff --git a/cove-net/server/src/message/handlers/account/register.rs b/cove-net/server/src/message/handlers/account/register.rs index 44cb0df..509ed8c 100644 --- a/cove-net/server/src/message/handlers/account/register.rs +++ b/cove-net/server/src/message/handlers/account/register.rs @@ -1,11 +1,9 @@ -use hyper::body::Buf; -use http_body_util::BodyExt; use std::collections::VecDeque; use anyhow::Error; use async_trait::async_trait; use http_body_util::Full; -use hyper::body::{Bytes, Incoming}; -use hyper::{Request, Response}; +use hyper::body::Bytes; +use hyper::Response; use hyper::http::request::Parts; use cove_net_common::message::c2s::account::register::RegisterMessage; use cove_net_common::message::c2s::ClientToServerMessage; diff --git a/cove-net/server/src/message/handlers/base/handler.rs b/cove-net/server/src/message/handlers/base/handler.rs index 323e0a8..8465af4 100644 --- a/cove-net/server/src/message/handlers/base/handler.rs +++ b/cove-net/server/src/message/handlers/base/handler.rs @@ -2,8 +2,8 @@ use std::collections::VecDeque; use anyhow::{Error}; use async_trait::async_trait; use http_body_util::Full; -use hyper::body::{Bytes, Incoming}; -use hyper::{Request, Response}; +use hyper::body::Bytes; +use hyper::Response; use hyper::http::request::Parts; use cove_net_common::message::c2s::ClientToServerMessage; use crate::message::handlers::base::middleware::{AssociatedDataMap}; diff --git a/cove-net/server/src/message/handlers/base/middleware.rs b/cove-net/server/src/message/handlers/base/middleware.rs index d881afc..ec4421e 100644 --- a/cove-net/server/src/message/handlers/base/middleware.rs +++ b/cove-net/server/src/message/handlers/base/middleware.rs @@ -2,8 +2,8 @@ use std::any::{Any, TypeId}; use anyhow::Error; use async_trait::async_trait; use http_body_util::Full; -use hyper::body::{Bytes, Incoming}; -use hyper::{Request, Response}; +use hyper::body::Bytes; +use hyper::Response; use hyper::http::request::Parts; use crate::message::StdHashMap; diff --git a/cove-net/server/src/message/handlers/mod.rs b/cove-net/server/src/message/handlers/mod.rs index ce660db..88a2f73 100644 --- a/cove-net/server/src/message/handlers/mod.rs +++ b/cove-net/server/src/message/handlers/mod.rs @@ -1,10 +1,10 @@ -use std::any::{Any, TypeId}; +use std::any::TypeId; use std::collections::VecDeque; use std::sync::Arc; use anyhow::{anyhow, Error}; use http_body_util::Full; -use hyper::body::{Bytes, Incoming}; -use hyper::{Request, Response}; +use hyper::body::Bytes; +use hyper::Response; use hyper::http::request::Parts; use scc::HashMap; use crate::message::handlers::base::handler::CoveRequestHandler; diff --git a/cove-net/server/src/message/handlers/text/attachment.rs b/cove-net/server/src/message/handlers/text/attachment.rs index e04d339..619d0e6 100644 --- a/cove-net/server/src/message/handlers/text/attachment.rs +++ b/cove-net/server/src/message/handlers/text/attachment.rs @@ -1,11 +1,9 @@ -use hyper::body::Buf; -use http_body_util::BodyExt; use std::collections::VecDeque; use anyhow::Error; use async_trait::async_trait; use http_body_util::Full; -use hyper::body::{Bytes, Incoming}; -use hyper::{Request, Response}; +use hyper::body::Bytes; +use hyper::Response; use hyper::http::request::Parts; use cove_net_common::message::c2s::ClientToServerMessage; use cove_net_common::message::c2s::text::attachment::AttachmentMessage; diff --git a/cove-net/server/src/message/handlers/text/reaction.rs b/cove-net/server/src/message/handlers/text/reaction.rs index 482ccd9..7eca076 100644 --- a/cove-net/server/src/message/handlers/text/reaction.rs +++ b/cove-net/server/src/message/handlers/text/reaction.rs @@ -1,11 +1,9 @@ -use hyper::body::Buf; -use http_body_util::BodyExt; use std::collections::VecDeque; use anyhow::Error; use async_trait::async_trait; use http_body_util::Full; -use hyper::body::{Bytes, Incoming}; -use hyper::{Request, Response}; +use hyper::body::Bytes; +use hyper::Response; use hyper::http::request::Parts; use cove_net_common::message::c2s::ClientToServerMessage; use cove_net_common::message::c2s::text::reaction::ReactionMessage; diff --git a/cove-net/server/src/message/handlers/text/text.rs b/cove-net/server/src/message/handlers/text/text.rs index aa5587e..33c3581 100644 --- a/cove-net/server/src/message/handlers/text/text.rs +++ b/cove-net/server/src/message/handlers/text/text.rs @@ -1,11 +1,9 @@ -use hyper::body::Buf; -use http_body_util::BodyExt; use std::collections::VecDeque; use anyhow::Error; use async_trait::async_trait; use http_body_util::Full; -use hyper::body::{Bytes, Incoming}; -use hyper::{Request, Response}; +use hyper::body::Bytes; +use hyper::Response; use hyper::http::request::Parts; use cove_net_common::message::c2s::ClientToServerMessage; use cove_net_common::message::c2s::text::text::TextMessage; diff --git a/cove-net/server/src/message/middleware/auth.rs b/cove-net/server/src/message/middleware/auth.rs index 3a8d3ec..f33c71b 100644 --- a/cove-net/server/src/message/middleware/auth.rs +++ b/cove-net/server/src/message/middleware/auth.rs @@ -1,10 +1,9 @@ -use std::any::TypeId; use std::time::SystemTime; use anyhow::Error; use async_trait::async_trait; use http_body_util::Full; -use hyper::body::{Bytes, Incoming}; -use hyper::{Request, Response, StatusCode}; +use hyper::body::Bytes; +use hyper::{Response, StatusCode}; use hyper::http::request::Parts; use cove_net_common::id::message_type::MessageType; use cove_net_common::id::SnowflakeID;