diff --git a/Dockerfile b/Dockerfile index cd322bd..7f5696c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,7 @@ RUN apt-get update && apt-get install -y \ curl \ build-essential \ libssl-dev \ + libssl1.1 \ pkg-config \ && rm -rf /var/lib/apt/lists/* diff --git a/imphnen-cms/src/lib.rs b/imphnen-cms/src/lib.rs index 590a6fc..3789969 100644 --- a/imphnen-cms/src/lib.rs +++ b/imphnen-cms/src/lib.rs @@ -1,16 +1,2 @@ pub mod v1; - -pub fn add(left: u64, right: u64) -> u64 { - left + right -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn it_works() { - let result = add(2, 2); - assert_eq!(result, 4); - } -} +pub use v1::*; diff --git a/imphnen-cms/src/v1/landing/events/events_controller.rs b/imphnen-cms/src/v1/landing/events/events_controller.rs index 0e5929c..4ffaaeb 100644 --- a/imphnen-cms/src/v1/landing/events/events_controller.rs +++ b/imphnen-cms/src/v1/landing/events/events_controller.rs @@ -1,18 +1,21 @@ use super::{ - events_dto::{EventsCreateRequestDto, EventsDetailItemDto, EventsListItemDto, EventsUpdateRequestDto}, - events_service::EventsService, + events_dto::{ + EventsCreateRequestDto, EventsDetailItemDto, EventsListItemDto, + EventsUpdateRequestDto, + }, + events_service::EventsService, }; -use imphnen_libs::{AppState, MetaRequestDto, ResponseListSuccessDto, ResponseSuccessDto, MessageResponseDto}; use axum::extract::{Path, Query}; use axum::response::IntoResponse; use axum::{Extension, Json}; +use imphnen_libs::{ + AppState, MessageResponseDto, MetaRequestDto, ResponseListSuccessDto, + ResponseSuccessDto, +}; #[utoipa::path( get, - security( - ("Bearer" = []) - ), - path = "/v1/events", + path = "/v1/cms/landing/events", params( ("page" = Option, Query, description = "Page number"), ("per_page" = Option, Query, description = "Items per page"), @@ -28,18 +31,15 @@ use axum::{Extension, Json}; tag = "Events" )] pub async fn get_event_list( - Extension(state): Extension, - Query(meta): Query, + Extension(state): Extension, + Query(meta): Query, ) -> impl IntoResponse { - EventsService::get_event_list(&state, meta).await + EventsService::get_event_list(&state, meta).await } #[utoipa::path( get, - security( - ("Bearer" = []) - ), - path = "/v1/events/detail/{id}", + path = "/v1/cms/landing/events/detail/{id}", params( ("id" = String, Path, description = "Event ID") ), @@ -49,10 +49,10 @@ pub async fn get_event_list( tag = "Events" )] pub async fn get_event_by_id( - Extension(state): Extension, - Path(id): Path, + Extension(state): Extension, + Path(id): Path, ) -> impl IntoResponse { - EventsService::get_event_by_id(&state, id).await + EventsService::get_event_by_id(&state, id).await } #[utoipa::path( @@ -60,7 +60,7 @@ pub async fn get_event_by_id( security( ("Bearer" = []) ), - path = "/v1/events/create", + path = "/v1/cms/landing/events/create", request_body = EventsCreateRequestDto, responses( (status = 201, description = "Create new event", body = MessageResponseDto) @@ -68,10 +68,10 @@ pub async fn get_event_by_id( tag = "Events" )] pub async fn post_create_event( - Extension(state): Extension, - Json(payload): Json, + Extension(state): Extension, + Json(payload): Json, ) -> impl IntoResponse { - EventsService::create_event(&state, payload).await + EventsService::create_event(&state, payload).await } #[utoipa::path( @@ -79,7 +79,7 @@ pub async fn post_create_event( security( ("Bearer" = []) ), - path = "/v1/events/update/{id}", + path = "/v1/cms/landing/events/update/{id}", params( ("id" = String, Path, description = "Event ID") ), @@ -90,11 +90,11 @@ pub async fn post_create_event( tag = "Events" )] pub async fn patch_update_event( - Extension(state): Extension, - Path(id): Path, - Json(payload): Json, + Extension(state): Extension, + Path(id): Path, + Json(payload): Json, ) -> impl IntoResponse { - EventsService::update_event(&state, id, payload).await + EventsService::update_event(&state, id, payload).await } #[utoipa::path( @@ -102,7 +102,7 @@ pub async fn patch_update_event( security( ("Bearer" = []) ), - path = "/v1/events/delete/{id}", + path = "/v1/cms/landing/events/delete/{id}", params( ("id" = String, Path, description = "Event ID") ), @@ -112,8 +112,8 @@ pub async fn patch_update_event( tag = "Events" )] pub async fn delete_event( - Extension(state): Extension, - Path(id): Path, + Extension(state): Extension, + Path(id): Path, ) -> impl IntoResponse { - EventsService::delete_event(&state, id).await + EventsService::delete_event(&state, id).await } diff --git a/imphnen-cms/src/v1/landing/events/events_repository.rs b/imphnen-cms/src/v1/landing/events/events_repository.rs index ae59596..6746a59 100644 --- a/imphnen-cms/src/v1/landing/events/events_repository.rs +++ b/imphnen-cms/src/v1/landing/events/events_repository.rs @@ -1,9 +1,8 @@ +use super::{events_dto::EventsQueryDto, events_schema::EventsSchema}; use anyhow::{Result, bail}; use imphnen_libs::{AppState, MetaRequestDto, ResourceEnum, ResponseListSuccessDto}; use imphnen_utils::{DetailQueryBuilder, ListQueryBuilder, get_id, get_iso_date}; -use super::{events_dto::EventsQueryDto, events_schema::EventsSchema}; - pub struct EventsRepository<'a> { state: &'a AppState, } @@ -13,7 +12,6 @@ impl<'a> EventsRepository<'a> { Self { state } } - // Get list of events with pagination and sorting by newest pub async fn query_event_list( &self, meta: MetaRequestDto, diff --git a/imphnen-cms/src/v1/landing/events/mod.rs b/imphnen-cms/src/v1/landing/events/mod.rs index 9247bc4..c6ab5d1 100644 --- a/imphnen-cms/src/v1/landing/events/mod.rs +++ b/imphnen-cms/src/v1/landing/events/mod.rs @@ -1,17 +1,44 @@ +use axum::{ + Router, + routing::{delete, get, patch, post}, +}; + +pub mod events_controller; pub mod events_dto; +pub mod events_repository; pub mod events_schema; -pub mod events_repository; pub mod events_service; -pub mod events_controller; -use axum::{routing::{delete, get, patch, post}, Router}; pub use events_controller::*; +pub use events_dto::*; +pub use events_repository::*; +pub use events_schema::*; +pub use events_service::*; pub fn events_public_routes() -> Router { Router::new() - .route("/events", get(events_controller::get_event_list)) - .route("/events/detail/{id}", get(events_controller::get_event_by_id)) - .route("/events/create", post(events_controller::post_create_event)) - .route("/events/update/{id}", patch(events_controller::patch_update_event)) - .route("/events/delete/{id}", delete(events_controller::delete_event)) + .route( + "/cms/landing/events", + get(events_controller::get_event_list), + ) + .route( + "/cms/landing/events/detail/{id}", + get(events_controller::get_event_by_id), + ) +} + +pub fn events_protected_routes() -> Router { + Router::new() + .route( + "/cms/landing/events/create", + post(events_controller::post_create_event), + ) + .route( + "/cms/landing/events/update/{id}", + patch(events_controller::patch_update_event), + ) + .route( + "/cms/landing/events/delete/{id}", + delete(events_controller::delete_event), + ) } diff --git a/imphnen-cms/src/v1/landing/mod.rs b/imphnen-cms/src/v1/landing/mod.rs index 6226263..c60c659 100644 --- a/imphnen-cms/src/v1/landing/mod.rs +++ b/imphnen-cms/src/v1/landing/mod.rs @@ -1 +1,3 @@ -pub mod events; \ No newline at end of file +pub mod events; + +pub use events::*; diff --git a/imphnen-cms/src/v1/mod.rs b/imphnen-cms/src/v1/mod.rs index 5947388..078f4f7 100644 --- a/imphnen-cms/src/v1/mod.rs +++ b/imphnen-cms/src/v1/mod.rs @@ -1 +1,3 @@ -pub mod landing; \ No newline at end of file +pub mod landing; + +pub use landing::*; diff --git a/imphnen-gateway/src/docs.rs b/imphnen-gateway/src/docs.rs index bd0a0f0..e6d31ec 100644 --- a/imphnen-gateway/src/docs.rs +++ b/imphnen-gateway/src/docs.rs @@ -6,7 +6,7 @@ use utoipa::{ Modify, OpenApi, }; use imphnen_gacha::{gacha_claims, gacha_items, gacha_rolls, GachaClaimItemDto, GachaClaimRequestDto, GachaItemDto, GachaItemRequestDto, GachaRollItemDto, GachaRollRequestDto}; -use imphnen_cms::v1::landing::events::{events_controller, events_dto::{EventsDetailItemDto, EventsListItemDto}}; +use imphnen_cms::{events_controller, events_dto::{EventsDetailItemDto, EventsListItemDto}}; #[derive(OpenApi)] diff --git a/imphnen-gateway/src/lib.rs b/imphnen-gateway/src/lib.rs index 9978de0..c2bcdad 100644 --- a/imphnen-gateway/src/lib.rs +++ b/imphnen-gateway/src/lib.rs @@ -1,7 +1,7 @@ use axum::{ Extension, Router, middleware::from_fn, response::Redirect, routing::get, }; -use imphnen_cms::v1::landing::events::events_public_routes; +use imphnen_cms::{events_protected_routes, events_public_routes}; use imphnen_entities::{AppState, SurrealMemClient, SurrealWsClient}; use imphnen_gacha::gacha_router; use imphnen_iam::{iam_protected_routes, iam_public_routes}; @@ -20,17 +20,21 @@ pub async fn gateway_service( surrealdb_mem, }; - let public_routes = iam_public_routes(); - let events_public_routes = events_public_routes(); + let public_routes = Router::new() + .merge(iam_public_routes()) + .merge(events_public_routes()); let protected_routes = Router::new() .merge(iam_protected_routes()) + .merge(events_protected_routes()) .merge(gacha_router()) .layer(from_fn(auth_middleware)); + let routes = public_routes.merge(protected_routes); + Router::new() .route("/", get(Redirect::to("/docs"))) - .nest("/v1", public_routes.merge(protected_routes).merge(events_public_routes)) + .nest("/v1", routes) .merge(SwaggerUi::new("/docs").url("/openapi.json", docs_router())) .layer(cors_middleware()) .layer(Extension(state))