init
This commit is contained in:
35
libertas_core/src/services.rs
Normal file
35
libertas_core/src/services.rs
Normal file
@@ -0,0 +1,35 @@
|
||||
use async_trait::async_trait;
|
||||
use uuid::Uuid;
|
||||
|
||||
use crate::{
|
||||
error::CoreResult,
|
||||
models::{Album, Media, User},
|
||||
schema::{
|
||||
AddMediaToAlbumData, CreateAlbumData, CreateUserData, LoginUserData, ShareAlbumData,
|
||||
UploadMediaData,
|
||||
},
|
||||
};
|
||||
|
||||
#[async_trait]
|
||||
pub trait MediaService: Send + Sync {
|
||||
async fn upload_media(&self, data: UploadMediaData<'_>) -> CoreResult<Media>;
|
||||
async fn get_media_details(&self, id: Uuid, user_id: Uuid) -> CoreResult<Media>;
|
||||
async fn list_user_media(&self, user_id: Uuid) -> CoreResult<Vec<Media>>;
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
pub trait UserService: Send + Sync {
|
||||
async fn register(&self, data: CreateUserData<'_>) -> CoreResult<User>;
|
||||
async fn login(&self, data: LoginUserData<'_>) -> CoreResult<String>;
|
||||
async fn get_user_details(&self, user_id: uuid::Uuid) -> CoreResult<User>;
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
pub trait AlbumService: Send + Sync {
|
||||
async fn create_album(&self, data: CreateAlbumData<'_>) -> CoreResult<()>;
|
||||
async fn get_album_details(&self, album_id: Uuid, user_id: Uuid) -> CoreResult<Album>;
|
||||
async fn add_media_to_album(&self, data: AddMediaToAlbumData, user_id: Uuid) -> CoreResult<()>;
|
||||
async fn list_user_albums(&self, user_id: Uuid) -> CoreResult<Vec<Album>>;
|
||||
|
||||
async fn share_album(&self, data: ShareAlbumData, owner_id: Uuid) -> CoreResult<()>;
|
||||
}
|
||||
Reference in New Issue
Block a user