Added apis
This commit is contained in:
11
como_api/src/controllers/graphql.rs
Normal file
11
como_api/src/controllers/graphql.rs
Normal file
@@ -0,0 +1,11 @@
|
||||
use axum::{routing::get, Router};
|
||||
use como_gql::{graphql_handler, graphql_playground};
|
||||
use como_infrastructure::register::ServiceRegister;
|
||||
|
||||
pub struct GraphQLController;
|
||||
|
||||
impl GraphQLController {
|
||||
pub fn new_router(_service_register: ServiceRegister) -> Router {
|
||||
Router::new().route("/", get(graphql_playground).post(graphql_handler))
|
||||
}
|
||||
}
|
1
como_api/src/controllers/mod.rs
Normal file
1
como_api/src/controllers/mod.rs
Normal file
@@ -0,0 +1 @@
|
||||
pub mod graphql;
|
2
como_api/src/lib.rs
Normal file
2
como_api/src/lib.rs
Normal file
@@ -0,0 +1,2 @@
|
||||
mod controllers;
|
||||
pub mod router;
|
44
como_api/src/router.rs
Normal file
44
como_api/src/router.rs
Normal file
@@ -0,0 +1,44 @@
|
||||
use anyhow::Context;
|
||||
use axum::{
|
||||
http::{HeaderValue, Method},
|
||||
Router,
|
||||
};
|
||||
use como_infrastructure::register::ServiceRegister;
|
||||
use tower::ServiceBuilder;
|
||||
use tower_http::{cors::CorsLayer, trace::TraceLayer};
|
||||
|
||||
use crate::controllers::graphql::GraphQLController;
|
||||
|
||||
pub struct Api;
|
||||
|
||||
impl Api {
|
||||
pub async fn new(
|
||||
port: u32,
|
||||
cors_origin: &str,
|
||||
service_register: ServiceRegister,
|
||||
) -> anyhow::Result<()> {
|
||||
let router = Router::new()
|
||||
.nest(
|
||||
"/graphql",
|
||||
GraphQLController::new_router(service_register.clone()),
|
||||
)
|
||||
.layer(ServiceBuilder::new().layer(TraceLayer::new_for_http()))
|
||||
.layer(
|
||||
CorsLayer::new()
|
||||
.allow_origin(
|
||||
cors_origin
|
||||
.parse::<HeaderValue>()
|
||||
.context("could not parse cors origin as header")?,
|
||||
)
|
||||
.allow_headers([axum::http::header::CONTENT_TYPE])
|
||||
.allow_methods([Method::GET, Method::POST, Method::OPTIONS]),
|
||||
);
|
||||
|
||||
axum::Server::bind(&format!("0.0.0.0:{}", port).parse().unwrap())
|
||||
.serve(router.into_make_service())
|
||||
.await
|
||||
.context("error while starting API")?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user