with graphql
This commit is contained in:
parent
5e9001b998
commit
c7f8dc6198
7
.env
7
.env
@ -1,4 +1,11 @@
|
||||
POSTGRES_DB=como
|
||||
POSTGRES_USER=como
|
||||
POSTGRES_PASSWORD=somenotverysecurepassword
|
||||
|
||||
DATABASE_URL="postgres://como:somenotverysecurepassword@localhost:5432/como"
|
||||
RUST_LOG=como_api=info,como_bin=info,como_core=info,como_domain=info,como_gql=info,como_infrastructure=info,sqlx=debug,tower_http=debug
|
||||
TOKEN_SECRET=something
|
||||
API_PORT=3001
|
||||
CORS_ORIGIN=http://localhost:3000
|
||||
RUN_MIGRATIONS=true
|
||||
SEED=true
|
||||
|
@ -1,11 +1,21 @@
|
||||
use axum::{routing::get, Router};
|
||||
use como_gql::{graphql_handler, graphql_playground};
|
||||
use async_graphql::{EmptySubscription, Schema};
|
||||
use axum::{routing::get, Extension, Router};
|
||||
use como_gql::{
|
||||
graphql::{MutationRoot, QueryRoot},
|
||||
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))
|
||||
pub fn new_router(service_register: ServiceRegister) -> Router {
|
||||
let schema = Schema::build(QueryRoot, MutationRoot, EmptySubscription)
|
||||
.data(service_register)
|
||||
.finish();
|
||||
|
||||
Router::new()
|
||||
.route("/", get(graphql_playground).post(graphql_handler))
|
||||
.layer(Extension(schema))
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,7 @@
|
||||
use std::{
|
||||
sync::Arc,
|
||||
};
|
||||
use std::sync::Arc;
|
||||
|
||||
mod error;
|
||||
|
||||
|
||||
use clap::Parser;
|
||||
|
||||
use anyhow::Context;
|
||||
@ -14,9 +11,6 @@ use como_infrastructure::{
|
||||
configs::AppConfig, database::ConnectionPoolManager, register::ServiceRegister,
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
|
||||
|
||||
#[tokio::main]
|
||||
@ -27,12 +21,7 @@ async fn main() -> anyhow::Result<()> {
|
||||
let config = Arc::new(AppConfig::parse());
|
||||
|
||||
tracing_subscriber::registry()
|
||||
.with(tracing_subscriber::EnvFilter::new(
|
||||
std::env::var("RUST_LOG").unwrap_or_else(|_| {
|
||||
"como_bin=debug,tower_http=debug,axum_extra=debug,hyper=info,mio=info,sqlx=info,async_graphql=debug"
|
||||
.into()
|
||||
}),
|
||||
))
|
||||
.with(tracing_subscriber::EnvFilter::new(&config.rust_log))
|
||||
.with(tracing_subscriber::fmt::layer())
|
||||
.init();
|
||||
|
||||
@ -40,9 +29,13 @@ async fn main() -> anyhow::Result<()> {
|
||||
|
||||
let service_register = ServiceRegister::new(pool, config.clone());
|
||||
|
||||
Api::new(3001, &config.cors_origin, service_register.clone())
|
||||
.await
|
||||
.context("could not initialize API")?;
|
||||
Api::new(
|
||||
config.api_port,
|
||||
&config.cors_origin,
|
||||
service_register.clone(),
|
||||
)
|
||||
.await
|
||||
.context("could not initialize API")?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
@ -3,8 +3,7 @@ use async_graphql::{Context, EmptySubscription, Object, Schema};
|
||||
use como_domain::item::{requests::CreateItemDto, responses::CreatedItemDto};
|
||||
use como_infrastructure::register::ServiceRegister;
|
||||
|
||||
|
||||
pub type CibusSchema = Schema<QueryRoot, MutationRoot, EmptySubscription>;
|
||||
pub type ComoSchema = Schema<QueryRoot, MutationRoot, EmptySubscription>;
|
||||
|
||||
pub struct MutationRoot;
|
||||
|
||||
|
@ -1,30 +1,17 @@
|
||||
use async_graphql_axum::{GraphQLRequest, GraphQLResponse};
|
||||
use axum::{
|
||||
extract::Extension,
|
||||
http::{StatusCode},
|
||||
http::StatusCode,
|
||||
response::{Html, IntoResponse},
|
||||
};
|
||||
|
||||
|
||||
use async_graphql::{
|
||||
http::{playground_source, GraphQLPlaygroundConfig},
|
||||
};
|
||||
use axum_sessions::{
|
||||
extractors::{ReadableSession},
|
||||
};
|
||||
use graphql::CibusSchema;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
use async_graphql::http::{playground_source, GraphQLPlaygroundConfig};
|
||||
use graphql::ComoSchema;
|
||||
|
||||
pub mod graphql;
|
||||
|
||||
pub async fn graphql_handler(
|
||||
schema: Extension<CibusSchema>,
|
||||
_session: ReadableSession,
|
||||
schema: Extension<ComoSchema>,
|
||||
req: GraphQLRequest,
|
||||
) -> Result<GraphQLResponse, StatusCode> {
|
||||
let req = req.into_inner();
|
||||
@ -33,5 +20,5 @@ pub async fn graphql_handler(
|
||||
}
|
||||
|
||||
pub async fn graphql_playground() -> impl IntoResponse {
|
||||
Html(playground_source(GraphQLPlaygroundConfig::new("/")))
|
||||
Html(playground_source(GraphQLPlaygroundConfig::new("/graphql")))
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ pub struct AppConfig {
|
||||
#[clap(long, env)]
|
||||
pub token_secret: String,
|
||||
#[clap(long, env)]
|
||||
pub port: u32,
|
||||
pub api_port: u32,
|
||||
#[clap(long, env)]
|
||||
pub run_migrations: bool,
|
||||
#[clap(long, env)]
|
||||
@ -15,4 +15,3 @@ pub struct AppConfig {
|
||||
#[clap(long, env)]
|
||||
pub cors_origin: String,
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,7 @@ impl ConnectionPoolManager {
|
||||
sqlx::migrate!()
|
||||
.run(&pool)
|
||||
.await
|
||||
.context("error while running database migrations");
|
||||
.context("error while running database migrations")?;
|
||||
}
|
||||
|
||||
Ok(pool)
|
||||
|
@ -2,4 +2,4 @@
|
||||
|
||||
set -e
|
||||
|
||||
cargo run como_bin/
|
||||
(cd como_bin; cargo watch -x run)
|
||||
|
Loading…
Reference in New Issue
Block a user