diff --git a/src/api/admin/get.rs b/src/api/admin/get.rs new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/api/admin/get.rs @@ -0,0 +1 @@ + diff --git a/src/api/admin/mod.rs b/src/api/admin/mod.rs new file mode 100644 index 0000000..69e599d --- /dev/null +++ b/src/api/admin/mod.rs @@ -0,0 +1,2 @@ +pub mod get; +pub mod post; diff --git a/src/api/admin/post.rs b/src/api/admin/post.rs new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/api/admin/post.rs @@ -0,0 +1 @@ + diff --git a/src/api/hackathon_2024/team/post.rs b/src/api/hackathon_2024/team/post.rs index 94b7b9e..5db883d 100644 --- a/src/api/hackathon_2024/team/post.rs +++ b/src/api/hackathon_2024/team/post.rs @@ -1,14 +1,11 @@ -use crate::diesel::models::hackathon_2024::team::HackathonTeam2024Insertable; +use crate::dto::request::hackathon_2024::team::TeamCreateData; use crate::utils::prelude_api::*; use crate::utils::security::hashing_data; use rocket::post; #[post("/hackathon_2024/team/create", data = "")] -pub async fn create( - db_pool: &DbState, - data: Json, -) -> Result<(), ApiError> { - let mut team = data.into_inner(); +pub async fn create(db_pool: &DbState, data: Json) -> Result<(), ApiError> { + let mut team = data.into_inner().0; crate::utils::validation::data::hackathon_2024::team::field(&team)?; team.password_registration = hashing_data(team.password_registration)?; diff --git a/src/api/hackathon_2024/user/get.rs b/src/api/hackathon_2024/user/get.rs index 5387e68..17de422 100644 --- a/src/api/hackathon_2024/user/get.rs +++ b/src/api/hackathon_2024/user/get.rs @@ -7,6 +7,7 @@ use crate::utils::prelude_api::*; use crate::utils::security::decoded_data; use rocket::get; +#[allow(dead_code)] #[get("/hackathon_2024/user/confirm_new_user?")] pub async fn confirm_new_user(db_pool: &DbState, jwt_token: String) -> Result<(), ApiError> { create_user_by_jwt(db_pool, decoded_data(&jwt_token)?.claims) diff --git a/src/api/mod.rs b/src/api/mod.rs index 1296b13..56a5b3d 100644 --- a/src/api/mod.rs +++ b/src/api/mod.rs @@ -1,3 +1,4 @@ +pub mod admin; pub mod banner; pub mod hackathon_2024; pub mod news; diff --git a/src/dto/request/hackathon_2024/team.rs b/src/dto/request/hackathon_2024/team.rs index 7ce8044..b55ab6c 100644 --- a/src/dto/request/hackathon_2024/team.rs +++ b/src/dto/request/hackathon_2024/team.rs @@ -1,4 +1,5 @@ use crate::diesel::models::hackathon_2024::category::HackathonCategory2024Enum; +use crate::diesel::models::hackathon_2024::team::HackathonTeam2024Insertable; use serde::Deserialize; #[derive(Deserialize)] @@ -14,3 +15,5 @@ pub struct TeamUpdateData { pub category: HackathonCategory2024Enum, pub nickname_tg: String, } +#[derive(Debug, Deserialize)] +pub struct TeamCreateData(pub HackathonTeam2024Insertable); diff --git a/src/dto/response/hackathon_2024/mod.rs b/src/dto/response/hackathon_2024/mod.rs index 2de672d..18a8dfe 100644 --- a/src/dto/response/hackathon_2024/mod.rs +++ b/src/dto/response/hackathon_2024/mod.rs @@ -1,2 +1,3 @@ +pub mod team; pub mod university; pub mod user; diff --git a/src/dto/response/hackathon_2024/team.rs b/src/dto/response/hackathon_2024/team.rs new file mode 100644 index 0000000..cb4cd6c --- /dev/null +++ b/src/dto/response/hackathon_2024/team.rs @@ -0,0 +1,7 @@ +#[derive(serde::Serialize)] +pub struct Team(pub crate::diesel::models::hackathon_2024::team::HackathonTeam2024Queryable); + +#[derive(serde::Serialize)] +pub struct VecTeam( + pub Vec, +); diff --git a/src/server.rs b/src/server.rs index b3e27dd..4683702 100644 --- a/src/server.rs +++ b/src/server.rs @@ -42,7 +42,7 @@ impl Server { } fn configure_cors() -> Cors { - let exact = &[&format!("https://{}", "your_main_url.com")]; + let exact = &[&format!("https://{}", EnvConfiguration::get().main_url)]; CorsOptions { allowed_origins: AllowedOrigins::some_exact(exact), allowed_methods: vec!["GET", "POST", "PUT", "DELETE"] @@ -68,7 +68,6 @@ impl Server { api::test::get::ping, // /hackathon_2024/user/* api::hackathon_2024::user::post::registration_by_tg, - api::hackathon_2024::user::get::confirm_new_user, api::hackathon_2024::user::get::all, api::hackathon_2024::user::put::by_id, api::hackathon_2024::user::delete::by_id, diff --git a/src/utils/env_configuration.rs b/src/utils/env_configuration.rs index 9383380..35e04dc 100644 --- a/src/utils/env_configuration.rs +++ b/src/utils/env_configuration.rs @@ -43,7 +43,7 @@ impl EnvConfiguration { .parse() .expect("Invalid DATABASE_PORT"), main_url: EnvConfiguration::unwrap_env( - "DATABASE_PASSWORD", + "MAIN_URL", Some("http://localhost:3000".to_owned()), ), server_port: EnvConfiguration::unwrap_env("SERVER_PORT", Some(8080.to_string())) diff --git a/src/utils/prelude_api.rs b/src/utils/prelude_api.rs index 1dfdd21..fe8a534 100644 --- a/src/utils/prelude_api.rs +++ b/src/utils/prelude_api.rs @@ -1,4 +1,6 @@ pub use crate::diesel::prelude::DbState; pub use crate::error::api_error::ApiError; +#[allow(unused_imports)] +pub use crate::utils::env_configuration::EnvConfiguration; pub use log::info; pub use rocket::serde::json::Json; diff --git a/src/utils/validation/validation_string.rs b/src/utils/validation/validation_string.rs index a3e6c81..22166a4 100644 --- a/src/utils/validation/validation_string.rs +++ b/src/utils/validation/validation_string.rs @@ -37,7 +37,7 @@ impl> Validate for T { } fn is_nickname_tg(&self) -> bool { - match Regex::new(r"(?i)^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$") { + match Regex::new(r"^[a-zA-Z0-9](?:[a-zA-Z0-9_]{3,30}[a-zA-Z0-9])?$") { Ok(nickname_regex) => nickname_regex.is_match(self.as_ref()), Err(_) => false, }