Skip to content
Snippets Groups Projects
Commit 97ea85ce authored by Éloïs's avatar Éloïs
Browse files

[feat] gva: expose function to build schema

parent 25ef748a
No related branches found
No related tags found
No related merge requests found
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
)] )]
pub use duniter_conf::gva_conf::GvaConf; pub use duniter_conf::gva_conf::GvaConf;
pub use schema::{build_schema, GraphQlSchema};
mod anti_spam; mod anti_spam;
mod entities; mod entities;
...@@ -45,7 +46,7 @@ use crate::entities::{ ...@@ -45,7 +46,7 @@ use crate::entities::{
use crate::inputs::{TxIssuer, TxRecipient, UdsFilter}; use crate::inputs::{TxIssuer, TxRecipient, UdsFilter};
use crate::inputs_validators::TxCommentValidator; use crate::inputs_validators::TxCommentValidator;
use crate::pagination::Pagination; use crate::pagination::Pagination;
use crate::schema::{GraphQlSchema, SchemaData}; use crate::schema::SchemaData;
#[cfg(test)] #[cfg(test)]
use crate::tests::create_dbs_reader; use crate::tests::create_dbs_reader;
#[cfg(test)] #[cfg(test)]
...@@ -298,12 +299,8 @@ impl GvaModule { ...@@ -298,12 +299,8 @@ impl GvaModule {
software_version: &'static str, software_version: &'static str,
) { ) {
log::info!("GvaServer::start: conf={:?}", conf); log::info!("GvaServer::start: conf={:?}", conf);
let schema = async_graphql::Schema::build( let schema = schema::build_schema_with_data(
queries::QueryRoot::default(), schema::SchemaData {
mutations::MutationRoot::default(),
subscriptions::SubscriptionRoot::default(),
)
.data(schema::SchemaData {
dbs_reader: create_dbs_reader(gva_db_ro), dbs_reader: create_dbs_reader(gva_db_ro),
dbs_pool, dbs_pool,
server_meta_data: ServerMetaData { server_meta_data: ServerMetaData {
...@@ -312,9 +309,9 @@ impl GvaModule { ...@@ -312,9 +309,9 @@ impl GvaModule {
software_version, software_version,
}, },
txs_mempool: mempools.txs, txs_mempool: mempools.txs,
}) },
.extension(async_graphql::extensions::Logger) true,
.finish(); );
let graphql_post = warp_::graphql( let graphql_post = warp_::graphql(
&conf, &conf,
...@@ -477,12 +474,8 @@ mod tests { ...@@ -477,12 +474,8 @@ mod tests {
pub(crate) fn create_schema(dbs_ops: MockDbsReader) -> KvResult<GraphQlSchema> { pub(crate) fn create_schema(dbs_ops: MockDbsReader) -> KvResult<GraphQlSchema> {
let dbs = SharedDbs::mem()?; let dbs = SharedDbs::mem()?;
let threadpool = fast_threadpool::ThreadPool::start(ThreadPoolConfig::default(), dbs); let threadpool = fast_threadpool::ThreadPool::start(ThreadPoolConfig::default(), dbs);
Ok(async_graphql::Schema::build( Ok(schema::build_schema_with_data(
queries::QueryRoot::default(), schema::SchemaData {
mutations::MutationRoot::default(),
subscriptions::SubscriptionRoot::default(),
)
.data(schema::SchemaData {
dbs_pool: threadpool.into_async_handler(), dbs_pool: threadpool.into_async_handler(),
dbs_reader: Arc::new(dbs_ops), dbs_reader: Arc::new(dbs_ops),
server_meta_data: ServerMetaData { server_meta_data: ServerMetaData {
...@@ -491,9 +484,9 @@ mod tests { ...@@ -491,9 +484,9 @@ mod tests {
software_version: "test", software_version: "test",
}, },
txs_mempool: TxsMempool::new(10), txs_mempool: TxsMempool::new(10),
}) },
.extension(async_graphql::extensions::Logger) true,
.finish()) ))
} }
pub(crate) async fn exec_graphql_request( pub(crate) async fn exec_graphql_request(
......
...@@ -15,11 +15,37 @@ ...@@ -15,11 +15,37 @@
use crate::*; use crate::*;
pub(crate) type GraphQlSchema = async_graphql::Schema< pub type GraphQlSchema = async_graphql::Schema<
crate::queries::QueryRoot, crate::queries::QueryRoot,
crate::mutations::MutationRoot, crate::mutations::MutationRoot,
crate::subscriptions::SubscriptionRoot, crate::subscriptions::SubscriptionRoot,
>; >;
pub fn build_schema(logger: bool) -> GraphQlSchema {
let mut builder = async_graphql::Schema::build(
queries::QueryRoot::default(),
mutations::MutationRoot::default(),
subscriptions::SubscriptionRoot::default(),
);
if logger {
builder = builder.extension(async_graphql::extensions::Logger);
}
builder.finish()
}
pub(crate) fn build_schema_with_data(data: SchemaData, logger: bool) -> GraphQlSchema {
let mut builder = async_graphql::Schema::build(
queries::QueryRoot::default(),
mutations::MutationRoot::default(),
subscriptions::SubscriptionRoot::default(),
)
.data(data);
if logger {
builder = builder.extension(async_graphql::extensions::Logger);
}
builder.finish()
}
pub(crate) struct SchemaData { pub(crate) struct SchemaData {
pub(crate) dbs_pool: fast_threadpool::ThreadPoolAsyncHandler<SharedDbs<FileBackend>>, pub(crate) dbs_pool: fast_threadpool::ThreadPoolAsyncHandler<SharedDbs<FileBackend>>,
pub(crate) dbs_reader: DbsReader, pub(crate) dbs_reader: DbsReader,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment