feat: enhance database configuration and media handling with PostgreSQL integration and storage quota management
This commit is contained in:
@@ -48,13 +48,17 @@ impl MediaService for MediaServiceImpl {
|
||||
async fn upload_media(&self, mut data: UploadMediaData<'_>) -> CoreResult<Media> {
|
||||
let (file_bytes, hash, file_size) = self.hash_and_buffer_stream(&mut data).await?;
|
||||
|
||||
self.check_upload_prerequisites(data.owner_id, file_size, &hash)
|
||||
let owner_id = data.owner_id;
|
||||
let filename = data.filename;
|
||||
let mime_type = data.mime_type;
|
||||
|
||||
self.check_upload_prerequisites(owner_id, file_size, &hash)
|
||||
.await?;
|
||||
|
||||
let storage_path = self.persist_media_file(&file_bytes, &data.filename).await?;
|
||||
let storage_path = self.persist_media_file(&file_bytes, &filename).await?;
|
||||
|
||||
let media = self
|
||||
.persist_media_metadata(&data, storage_path, hash, file_size)
|
||||
.persist_media_metadata(owner_id, filename, mime_type, storage_path, hash, file_size)
|
||||
.await?;
|
||||
|
||||
self.publish_new_media_job(media.id).await?;
|
||||
@@ -237,17 +241,19 @@ impl MediaServiceImpl {
|
||||
|
||||
async fn persist_media_metadata(
|
||||
&self,
|
||||
data: &UploadMediaData<'_>,
|
||||
owner_id: Uuid,
|
||||
filename: String,
|
||||
mime_type: String,
|
||||
storage_path: String,
|
||||
hash: String,
|
||||
file_size: i64,
|
||||
) -> CoreResult<Media> {
|
||||
let media_model = Media {
|
||||
id: Uuid::new_v4(),
|
||||
owner_id: data.owner_id,
|
||||
owner_id,
|
||||
storage_path,
|
||||
original_filename: data.filename.clone(),
|
||||
mime_type: data.mime_type.clone(),
|
||||
original_filename: filename,
|
||||
mime_type,
|
||||
hash,
|
||||
created_at: chrono::Utc::now(),
|
||||
extracted_location: None,
|
||||
@@ -257,7 +263,7 @@ impl MediaServiceImpl {
|
||||
|
||||
self.repo.create(&media_model).await?;
|
||||
self.user_repo
|
||||
.update_storage_used(data.owner_id, file_size)
|
||||
.update_storage_used(owner_id, file_size)
|
||||
.await?;
|
||||
|
||||
Ok(media_model)
|
||||
|
||||
Reference in New Issue
Block a user