Fix shortcommings
This commit is contained in:
parent
1d4cda7c48
commit
78b9732ca1
@ -12,7 +12,7 @@ use crate::controllers::graphql::GraphQLController;
|
|||||||
pub struct Api;
|
pub struct Api;
|
||||||
|
|
||||||
impl Api {
|
impl Api {
|
||||||
pub async fn new(
|
pub async fn run_api(
|
||||||
port: u32,
|
port: u32,
|
||||||
cors_origin: &str,
|
cors_origin: &str,
|
||||||
service_register: ServiceRegister,
|
service_register: ServiceRegister,
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
use axum::{http::StatusCode, response::IntoResponse, Json};
|
use axum::{http::StatusCode, response::IntoResponse, Json};
|
||||||
use serde_json::json;
|
use serde_json::json;
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum AppError {
|
pub enum AppError {
|
||||||
WrongCredentials,
|
WrongCredentials,
|
||||||
|
@ -29,7 +29,7 @@ async fn main() -> anyhow::Result<()> {
|
|||||||
|
|
||||||
let service_register = ServiceRegister::new(pool, config.clone());
|
let service_register = ServiceRegister::new(pool, config.clone());
|
||||||
|
|
||||||
Api::new(
|
Api::run_api(
|
||||||
config.api_port,
|
config.api_port,
|
||||||
&config.cors_origin,
|
&config.cors_origin,
|
||||||
service_register.clone(),
|
service_register.clone(),
|
||||||
|
@ -2,7 +2,7 @@ pub mod queries;
|
|||||||
pub mod requests;
|
pub mod requests;
|
||||||
pub mod responses;
|
pub mod responses;
|
||||||
|
|
||||||
use async_graphql::{Enum, InputObject, SimpleObject};
|
use async_graphql::{Enum, InputObject};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
|
@ -4,8 +4,6 @@ use como_domain::{
|
|||||||
item::{
|
item::{
|
||||||
queries::{GetItemQuery, GetItemsQuery},
|
queries::{GetItemQuery, GetItemsQuery},
|
||||||
requests::CreateItemDto,
|
requests::CreateItemDto,
|
||||||
responses::CreatedItemDto,
|
|
||||||
ItemDto,
|
|
||||||
},
|
},
|
||||||
projects::{
|
projects::{
|
||||||
queries::{GetProjectQuery, GetProjectsQuery},
|
queries::{GetProjectQuery, GetProjectsQuery},
|
||||||
|
@ -35,19 +35,19 @@ pub struct Item {
|
|||||||
#[Object]
|
#[Object]
|
||||||
impl Item {
|
impl Item {
|
||||||
pub async fn id(&self, _ctx: &Context<'_>) -> anyhow::Result<Uuid> {
|
pub async fn id(&self, _ctx: &Context<'_>) -> anyhow::Result<Uuid> {
|
||||||
return Ok(self.id);
|
Ok(self.id)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn title(&self, _ctx: &Context<'_>) -> anyhow::Result<String> {
|
pub async fn title(&self, _ctx: &Context<'_>) -> anyhow::Result<String> {
|
||||||
return Ok(self.title.clone());
|
Ok(self.title.clone())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn description(&self, _ctx: &Context<'_>) -> anyhow::Result<Option<String>> {
|
pub async fn description(&self, _ctx: &Context<'_>) -> anyhow::Result<Option<String>> {
|
||||||
return Ok(self.description.clone());
|
Ok(self.description.clone())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn state(&self, _ctx: &Context<'_>) -> anyhow::Result<ItemState> {
|
pub async fn state(&self, _ctx: &Context<'_>) -> anyhow::Result<ItemState> {
|
||||||
return Ok(self.state);
|
Ok(self.state)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn project(&self, ctx: &Context<'_>) -> anyhow::Result<Project> {
|
pub async fn project(&self, ctx: &Context<'_>) -> anyhow::Result<Project> {
|
||||||
|
@ -7,8 +7,7 @@ use crate::{
|
|||||||
configs::AppConfig,
|
configs::AppConfig,
|
||||||
database::ConnectionPool,
|
database::ConnectionPool,
|
||||||
services::{
|
services::{
|
||||||
item_service::{DefaultItemService, MemoryItemService},
|
item_service::MemoryItemService, project_service::MemoryProjectService,
|
||||||
project_service::{DefaultProjectService, MemoryProjectService},
|
|
||||||
user_service::DefaultUserService,
|
user_service::DefaultUserService,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@ -26,14 +25,14 @@ impl ServiceRegister {
|
|||||||
|
|
||||||
let item_service = Arc::new(MemoryItemService::new()) as DynItemService;
|
let item_service = Arc::new(MemoryItemService::new()) as DynItemService;
|
||||||
let project_service = Arc::new(MemoryProjectService::new()) as DynProjectService;
|
let project_service = Arc::new(MemoryProjectService::new()) as DynProjectService;
|
||||||
let user_service = Arc::new(DefaultUserService::new(pool.clone())) as DynUserService;
|
let user_service = Arc::new(DefaultUserService::new(pool)) as DynUserService;
|
||||||
|
|
||||||
info!("services created succesfully");
|
info!("services created succesfully");
|
||||||
|
|
||||||
return Self {
|
Self {
|
||||||
item_service,
|
item_service,
|
||||||
user_service,
|
user_service,
|
||||||
project_service,
|
project_service,
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ use std::{
|
|||||||
sync::{Arc, Mutex},
|
sync::{Arc, Mutex},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
use anyhow::Context;
|
||||||
use axum::async_trait;
|
use axum::async_trait;
|
||||||
use como_core::items::ItemService;
|
use como_core::items::ItemService;
|
||||||
use como_domain::item::{
|
use como_domain::item::{
|
||||||
@ -21,6 +22,12 @@ impl DefaultItemService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Default for DefaultItemService {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self::new()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[async_trait]
|
#[async_trait]
|
||||||
impl ItemService for DefaultItemService {
|
impl ItemService for DefaultItemService {
|
||||||
async fn add_item(&self, _item: CreateItemDto) -> anyhow::Result<CreatedItemDto> {
|
async fn add_item(&self, _item: CreateItemDto) -> anyhow::Result<CreatedItemDto> {
|
||||||
@ -48,6 +55,12 @@ impl MemoryItemService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Default for MemoryItemService {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self::new()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[async_trait]
|
#[async_trait]
|
||||||
impl ItemService for MemoryItemService {
|
impl ItemService for MemoryItemService {
|
||||||
async fn add_item(&self, create_item: CreateItemDto) -> anyhow::Result<CreatedItemDto> {
|
async fn add_item(&self, create_item: CreateItemDto) -> anyhow::Result<CreatedItemDto> {
|
||||||
@ -71,7 +84,7 @@ impl ItemService for MemoryItemService {
|
|||||||
if let Ok(item_store) = self.item_store.lock() {
|
if let Ok(item_store) = self.item_store.lock() {
|
||||||
let item = item_store
|
let item = item_store
|
||||||
.get(&query.item_id.to_string())
|
.get(&query.item_id.to_string())
|
||||||
.ok_or(anyhow::anyhow!("could not find item"))?;
|
.context("could not find item")?;
|
||||||
return Ok(item.clone());
|
return Ok(item.clone());
|
||||||
} else {
|
} else {
|
||||||
Err(anyhow::anyhow!("could not unlock item_store"))
|
Err(anyhow::anyhow!("could not unlock item_store"))
|
||||||
|
Loading…
Reference in New Issue
Block a user