feat: with items

Signed-off-by: kjuulh <contact@kjuulh.io>
This commit is contained in:
2023-06-04 11:02:51 +02:00
parent 12c7c8f6ee
commit 534b2e4a23
25 changed files with 517 additions and 111 deletions

View File

@@ -5,10 +5,11 @@ use como_core::{items::DynItemService, projects::DynProjectService, users::DynUs
use tracing::log::info;
use crate::{
configs::AppConfig,
configs::{AppConfig, DatabaseType},
database::ConnectionPool,
services::{
item_service::MemoryItemService, project_service::MemoryProjectService,
item_service::{DefaultItemService, MemoryItemService},
project_service::{DefaultProjectService, MemoryProjectService},
user_service::DefaultUserService,
},
};
@@ -25,20 +26,42 @@ impl ServiceRegister {
pub async fn new(pool: ConnectionPool, config: Arc<AppConfig>) -> anyhow::Result<Self> {
info!("creating services");
let item_service = Arc::new(MemoryItemService::new()) as DynItemService;
let project_service = Arc::new(MemoryProjectService::new()) as DynProjectService;
let user_service = Arc::new(DefaultUserService::new(pool.clone())) as DynUserService;
let store = PostgresSessionStore::new(&config.database_url).await?;
let s = match config.database_type {
DatabaseType::Postgres => {
let item_service =
Arc::new(DefaultItemService::new(pool.clone())) as DynItemService;
let project_service =
Arc::new(DefaultProjectService::new(pool.clone())) as DynProjectService;
let user_service =
Arc::new(DefaultUserService::new(pool.clone())) as DynUserService;
let store = PostgresSessionStore::new(&config.database_url).await?;
store.migrate().await?;
store.migrate().await?;
Self {
item_service,
user_service,
project_service,
session_store: store,
}
}
DatabaseType::InMemory => {
let item_service = Arc::new(MemoryItemService::new()) as DynItemService;
let project_service = Arc::new(MemoryProjectService::new()) as DynProjectService;
let user_service =
Arc::new(DefaultUserService::new(pool.clone())) as DynUserService;
let store = PostgresSessionStore::new(&config.database_url).await?;
store.migrate().await?;
Self {
item_service,
user_service,
project_service,
session_store: store,
}
}
};
info!("services created succesfully");
Ok(Self {
item_service,
user_service,
project_service,
session_store: store,
})
Ok(s)
}
}