feat: expand workspace to include libertas_infra and libertas_worker

feat(libertas_api): add dependency on libertas_infra and async-nats

refactor(libertas_api): consolidate config loading and add broker_url

refactor(libertas_api): integrate NATS client into app state and services

feat(libertas_core): introduce config module for database and server settings

fix(libertas_core): enhance error handling with detailed messages

feat(libertas_infra): create infrastructure layer with database repositories

feat(libertas_infra): implement Postgres repositories for media and albums

feat(libertas_worker): add worker service to process media jobs via NATS
This commit is contained in:
2025-11-02 10:22:38 +01:00
parent 7ea91da20a
commit a5a88c7f33
23 changed files with 1122 additions and 107 deletions

View File

@@ -0,0 +1,37 @@
use serde::Deserialize;
use crate::error::CoreResult;
#[derive(Deserialize, Clone)]
pub enum DatabaseType {
Postgres,
Sqlite,
}
#[derive(Deserialize, Clone)]
pub struct DatabaseConfig {
pub db_type: DatabaseType,
pub url: String,
}
#[derive(Deserialize, Clone)]
pub struct Config {
pub database: DatabaseConfig,
pub server_address: String,
pub jwt_secret: String,
pub media_library_path: String,
pub broker_url: String,
}
pub fn load_config() -> CoreResult<Config> {
Ok(Config {
database: DatabaseConfig {
db_type: DatabaseType::Postgres,
url: "postgres://postgres:postgres@localhost:5432/libertas_db".to_string(),
},
server_address: "127.0.0.1:8080".to_string(),
jwt_secret: "super_secret_jwt_key".to_string(),
media_library_path: "media_library".to_string(),
broker_url: "amqp://guest:guest@localhost:5672/".to_string(),
})
}