Merge branch 'main' into leave-workspace

This commit is contained in:
Zack Fu Zi Xiang 2024-03-20 09:35:00 +08:00
commit 44ced4036e
No known key found for this signature in database
3 changed files with 2 additions and 34 deletions

View File

@ -1,18 +1,13 @@
use crate::pg_row::AFBlobMetadataRow;
use crate::resource_usage::{
delete_blob_metadata, get_blob_metadata, get_workspace_usage_size, insert_blob_metadata,
is_blob_metadata_exists,
delete_blob_metadata, get_blob_metadata, insert_blob_metadata, is_blob_metadata_exists,
};
use app_error::AppError;
use async_trait::async_trait;
use sqlx::PgPool;
use tracing::{event, instrument, warn};
use tracing::{instrument, warn};
use uuid::Uuid;
/// Maximum size of a blob in bytes.
pub const MAX_BLOB_SIZE: usize = 6 * 1024 * 1024;
pub const MAX_USAGE: u64 = 10 * 1024 * 1024 * 1024;
pub trait ResponseBlob {
fn to_blob(self) -> Vec<u8>;
}
@ -64,22 +59,7 @@ where
return Ok(());
}
// query the storage space of the workspace
let obj_key = format!("{}/{}", workspace_id, file_id);
let usage = get_workspace_usage_size(&self.pg_pool, &workspace_id).await?;
event!(
tracing::Level::TRACE,
"workspace consumed space: {}, new file:{} with size: {}",
obj_key,
file_id,
file_data.len(),
);
if usage > MAX_USAGE {
return Err(AppError::StorageSpaceNotEnough);
}
let obj_key = format!("{}/{}", workspace_id, file_id);
let mut tx = self.pg_pool.begin().await?;
insert_blob_metadata(
&mut tx,

View File

@ -74,7 +74,6 @@ impl WorkspaceMemberChangeset {
#[derive(Deserialize, Serialize)]
pub struct WorkspaceSpaceUsage {
pub total_capacity: u64,
pub consumed_capacity: u64,
}

View File

@ -11,7 +11,6 @@ use actix_web::{
use actix_web::{HttpResponse, Result};
use app_error::AppError;
use chrono::DateTime;
use database::file::{MAX_BLOB_SIZE, MAX_USAGE};
use database::resource_usage::{get_all_workspace_blob_metadata, get_workspace_usage_size};
use shared_entity::dto::workspace_dto::{BlobMetadata, RepeatedBlobMetaData, WorkspaceSpaceUsage};
use shared_entity::response::{AppResponse, AppResponseError, JsonAppResponse};
@ -57,15 +56,6 @@ async fn put_blob_handler(
let content_length = content_length.into_inner().into_inner();
let content_type = content_type.into_inner().to_string();
let content = {
// Check content length, if it's too large, return error.
if content_length > MAX_BLOB_SIZE {
return Ok(
AppResponse::from(AppError::PayloadTooLarge(
"The uploading file is too large".to_string(),
))
.into(),
);
}
let mut payload_reader = payload_to_async_read(payload);
let mut content = vec![0; content_length];
let n = payload_reader.read_exact(&mut content).await?;
@ -204,7 +194,6 @@ async fn get_workspace_usage_handler(
.map_err(AppResponseError::from)?;
let usage = WorkspaceSpaceUsage {
consumed_capacity: current,
total_capacity: MAX_USAGE,
};
Ok(AppResponse::Ok().with_data(usage).into())
}