mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-01 07:58:23 +00:00
update path
This commit is contained in:
1 parent
6e98b6f82e
commit
a442cdddbb
14 files changed
+31
-41
No files matched your search
@@ -39,7 +39,7 @@ pub struct ListFoldersSuccessResponse {
|
||||
|
||||
#[derive(Deserialize, ToSchema)]
|
||||
pub struct FolderPathInfo {
|
||||
pub folder_token: String,
|
||||
pub folder_token: FolderToken,
|
||||
}
|
||||
|
||||
#[derive(Serialize, ToSchema)]
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
use utoipa::{IntoParams, ToSchema};
|
||||
|
||||
use tokens::tokens::folders::FolderToken;
|
||||
use tokens::tokens::media_files::MediaFileToken;
|
||||
|
||||
use crate::folders::common::FolderMediaFileInfo;
|
||||
@@ -9,7 +10,7 @@ use crate::folders::common::FolderMediaFileInfo;
|
||||
|
||||
#[derive(Deserialize, ToSchema)]
|
||||
pub struct FolderMediaFilesPathInfo {
|
||||
pub folder_token: String,
|
||||
pub folder_token: FolderToken,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, ToSchema, IntoParams)]
|
||||
|
||||
@@ -9,7 +9,7 @@ use crate::folders::common::FolderInfo;
|
||||
|
||||
#[derive(Deserialize, ToSchema)]
|
||||
pub struct SubfolderPathInfo {
|
||||
pub folder_token: String,
|
||||
pub folder_token: FolderToken,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, ToSchema, IntoParams)]
|
||||
|
||||
+2
-3
@@ -23,7 +23,7 @@ const MAX_COLOR_CODE_LEN: usize = 16;
|
||||
put,
|
||||
tag = "Folders",
|
||||
path = "/v1/folders/folder/{folder_token}/color_code",
|
||||
params(("folder_token" = String, description = "Folder token")),
|
||||
params(("folder_token" = FolderToken, description = "Folder token")),
|
||||
request_body = SetFolderColorCodeRequest,
|
||||
responses(
|
||||
(status = 200, body = SetFolderColorCodeSuccessResponse),
|
||||
@@ -63,10 +63,9 @@ pub async fn color_code_folder_handler(
|
||||
}
|
||||
}
|
||||
|
||||
let folder_token = FolderToken::new_from_str(path.folder_token.trim());
|
||||
|
||||
let rows_affected = update_folder_color_code(UpdateFolderColorCodeArgs {
|
||||
folder_token: &folder_token,
|
||||
folder_token: &path.folder_token,
|
||||
owner_user_token: &user_session.user_token,
|
||||
maybe_color_code: trimmed.as_deref(),
|
||||
mysql_executor: &mut *conn,
|
||||
|
||||
+2
-3
@@ -21,7 +21,7 @@ use crate::state::server_state::ServerState;
|
||||
delete,
|
||||
tag = "Folders",
|
||||
path = "/v1/folders/folder/{folder_token}",
|
||||
params(("folder_token" = String, description = "Folder token")),
|
||||
params(("folder_token" = FolderToken, description = "Folder token")),
|
||||
responses(
|
||||
(status = 200, body = DeleteFolderSuccessResponse),
|
||||
(status = 401, body = CommonWebError),
|
||||
@@ -43,10 +43,9 @@ pub async fn delete_folder_handler(
|
||||
&http_request, &server_state.session_checker, &mut conn,
|
||||
).await.map_err(|_| CommonWebError::NotAuthorized)?;
|
||||
|
||||
let folder_token = FolderToken::new_from_str(path.folder_token.trim());
|
||||
|
||||
let rows_affected = soft_delete_folder(SoftDeleteFolderArgs {
|
||||
folder_token: &folder_token,
|
||||
folder_token: &path.folder_token,
|
||||
owner_user_token: &user_session.user_token,
|
||||
mysql_executor: &mut *conn,
|
||||
phantom: PhantomData,
|
||||
|
||||
+2
-3
@@ -21,7 +21,7 @@ use crate::state::server_state::ServerState;
|
||||
get,
|
||||
tag = "Folders",
|
||||
path = "/v1/folders/folder/{folder_token}",
|
||||
params(("folder_token" = String, description = "Folder token")),
|
||||
params(("folder_token" = FolderToken, description = "Folder token")),
|
||||
responses(
|
||||
(status = 200, body = GetFolderSuccessResponse),
|
||||
(status = 401, body = CommonWebError),
|
||||
@@ -43,10 +43,9 @@ pub async fn get_folder_handler(
|
||||
&http_request, &server_state.session_checker, &mut conn,
|
||||
).await.map_err(|_| CommonWebError::NotAuthorized)?;
|
||||
|
||||
let folder_token = FolderToken::new_from_str(path.folder_token.trim());
|
||||
|
||||
let row = get_folder_for_owner(GetFolderForOwnerArgs {
|
||||
folder_token: &folder_token,
|
||||
folder_token: &path.folder_token,
|
||||
owner_user_token: &user_session.user_token,
|
||||
mysql_executor: &mut *conn,
|
||||
phantom: PhantomData,
|
||||
|
||||
+2
-3
@@ -23,7 +23,7 @@ const MAX_NAME_LEN: usize = 255;
|
||||
put,
|
||||
tag = "Folders",
|
||||
path = "/v1/folders/folder/{folder_token}/rename",
|
||||
params(("folder_token" = String, description = "Folder token")),
|
||||
params(("folder_token" = FolderToken, description = "Folder token")),
|
||||
request_body = RenameFolderRequest,
|
||||
responses(
|
||||
(status = 200, body = RenameFolderSuccessResponse),
|
||||
@@ -58,10 +58,9 @@ pub async fn rename_folder_handler(
|
||||
));
|
||||
}
|
||||
|
||||
let folder_token = FolderToken::new_from_str(path.folder_token.trim());
|
||||
|
||||
let rows_affected = update_folder_name(UpdateFolderNameArgs {
|
||||
folder_token: &folder_token,
|
||||
folder_token: &path.folder_token,
|
||||
owner_user_token: &user_session.user_token,
|
||||
new_name: &new_name,
|
||||
mysql_executor: &mut *conn,
|
||||
|
||||
+2
-3
@@ -21,7 +21,7 @@ use crate::state::server_state::ServerState;
|
||||
put,
|
||||
tag = "Folders",
|
||||
path = "/v1/folders/folder/{folder_token}/star",
|
||||
params(("folder_token" = String, description = "Folder token")),
|
||||
params(("folder_token" = FolderToken, description = "Folder token")),
|
||||
request_body = SetFolderStarRequest,
|
||||
responses(
|
||||
(status = 200, body = SetFolderStarSuccessResponse),
|
||||
@@ -45,10 +45,9 @@ pub async fn star_folder_handler(
|
||||
&http_request, &server_state.session_checker, &mut conn,
|
||||
).await.map_err(|_| CommonWebError::NotAuthorized)?;
|
||||
|
||||
let folder_token = FolderToken::new_from_str(path.folder_token.trim());
|
||||
|
||||
let rows_affected = update_folder_has_star(UpdateFolderHasStarArgs {
|
||||
folder_token: &folder_token,
|
||||
folder_token: &path.folder_token,
|
||||
owner_user_token: &user_session.user_token,
|
||||
has_star: request.has_star,
|
||||
mysql_executor: &mut *conn,
|
||||
|
||||
+3
-4
@@ -34,7 +34,7 @@ const MAX_BULK: usize = 500;
|
||||
put,
|
||||
tag = "Folders",
|
||||
path = "/v1/folders/media_files/{folder_token}/bulk_add",
|
||||
params(("folder_token" = String, description = "Folder token")),
|
||||
params(("folder_token" = FolderToken, description = "Folder token")),
|
||||
request_body = BulkAddFolderMediaFilesRequest,
|
||||
responses(
|
||||
(status = 200, body = BulkAddFolderMediaFilesSuccessResponse),
|
||||
@@ -65,10 +65,9 @@ pub async fn bulk_add_folder_media_files_handler(
|
||||
));
|
||||
}
|
||||
|
||||
let folder_token = FolderToken::new_from_str(path.folder_token.trim());
|
||||
|
||||
let folder = get_folder_for_owner(GetFolderForOwnerArgs {
|
||||
folder_token: &folder_token,
|
||||
folder_token: &path.folder_token,
|
||||
owner_user_token: &user_session.user_token,
|
||||
mysql_executor: &mut *conn,
|
||||
phantom: PhantomData,
|
||||
@@ -91,7 +90,7 @@ pub async fn bulk_add_folder_media_files_handler(
|
||||
|
||||
if !accepted.is_empty() {
|
||||
bulk_insert_folder_media_files(BulkInsertFolderMediaFilesArgs {
|
||||
folder_token: &folder_token,
|
||||
folder_token: &path.folder_token,
|
||||
media_file_tokens: &accepted,
|
||||
mysql_executor: &mut *conn,
|
||||
phantom: PhantomData,
|
||||
|
||||
+3
-4
@@ -29,7 +29,7 @@ const MAX_BULK: usize = 500;
|
||||
put,
|
||||
tag = "Folders",
|
||||
path = "/v1/folders/media_files/{folder_token}/bulk_remove",
|
||||
params(("folder_token" = String, description = "Folder token")),
|
||||
params(("folder_token" = FolderToken, description = "Folder token")),
|
||||
request_body = BulkRemoveFolderMediaFilesRequest,
|
||||
responses(
|
||||
(status = 200, body = BulkRemoveFolderMediaFilesSuccessResponse),
|
||||
@@ -60,10 +60,9 @@ pub async fn bulk_remove_folder_media_files_handler(
|
||||
));
|
||||
}
|
||||
|
||||
let folder_token = FolderToken::new_from_str(path.folder_token.trim());
|
||||
|
||||
let folder = get_folder_for_owner(GetFolderForOwnerArgs {
|
||||
folder_token: &folder_token,
|
||||
folder_token: &path.folder_token,
|
||||
owner_user_token: &user_session.user_token,
|
||||
mysql_executor: &mut *conn,
|
||||
phantom: PhantomData,
|
||||
@@ -76,7 +75,7 @@ pub async fn bulk_remove_folder_media_files_handler(
|
||||
}
|
||||
|
||||
let removed_count = bulk_delete_folder_media_files(BulkDeleteFolderMediaFilesArgs {
|
||||
folder_token: &folder_token,
|
||||
folder_token: &path.folder_token,
|
||||
media_file_tokens: &request.media_file_tokens,
|
||||
mysql_executor: &mut *conn,
|
||||
phantom: PhantomData,
|
||||
|
||||
+3
-4
@@ -30,7 +30,7 @@ const MAX_LIMIT: u32 = 1000;
|
||||
tag = "Folders",
|
||||
path = "/v1/folders/media_files/{folder_token}",
|
||||
params(
|
||||
("folder_token" = String, description = "Folder token"),
|
||||
("folder_token" = FolderToken, description = "Folder token"),
|
||||
ListFolderMediaFilesQueryParams,
|
||||
),
|
||||
responses(
|
||||
@@ -56,10 +56,9 @@ pub async fn list_folder_media_files_handler(
|
||||
&http_request, &server_state.session_checker, &mut conn,
|
||||
).await.map_err(|_| CommonWebError::NotAuthorized)?;
|
||||
|
||||
let folder_token = FolderToken::new_from_str(path.folder_token.trim());
|
||||
|
||||
let folder = get_folder_for_owner(GetFolderForOwnerArgs {
|
||||
folder_token: &folder_token,
|
||||
folder_token: &path.folder_token,
|
||||
owner_user_token: &user_session.user_token,
|
||||
mysql_executor: &mut *conn,
|
||||
phantom: PhantomData,
|
||||
@@ -87,7 +86,7 @@ pub async fn list_folder_media_files_handler(
|
||||
};
|
||||
|
||||
let rows = list_folder_media_files(ListFolderMediaFilesArgs {
|
||||
folder_token: &folder_token,
|
||||
folder_token: &path.folder_token,
|
||||
maybe_cursor_id,
|
||||
limit,
|
||||
mysql_executor: &mut *conn,
|
||||
|
||||
+3
-4
@@ -32,7 +32,7 @@ const MAX_BULK: usize = 500;
|
||||
put,
|
||||
tag = "Folders",
|
||||
path = "/v1/folders/subfolders/{folder_token}/bulk_add",
|
||||
params(("folder_token" = String, description = "Parent folder token")),
|
||||
params(("folder_token" = FolderToken, description = "Parent folder token")),
|
||||
request_body = BulkAddSubfoldersRequest,
|
||||
responses(
|
||||
(status = 200, body = BulkAddSubfoldersSuccessResponse),
|
||||
@@ -63,10 +63,9 @@ pub async fn bulk_add_subfolders_handler(
|
||||
));
|
||||
}
|
||||
|
||||
let parent_token = FolderToken::new_from_str(path.folder_token.trim());
|
||||
|
||||
let parent = get_folder_for_owner(GetFolderForOwnerArgs {
|
||||
folder_token: &parent_token,
|
||||
folder_token: &path.folder_token,
|
||||
owner_user_token: &user_session.user_token,
|
||||
mysql_executor: &mut *conn,
|
||||
phantom: PhantomData,
|
||||
@@ -91,7 +90,7 @@ pub async fn bulk_add_subfolders_handler(
|
||||
if !accepted.is_empty() {
|
||||
bulk_set_parent_folder(BulkSetParentFolderArgs {
|
||||
child_tokens: &accepted,
|
||||
new_parent_token: &parent_token,
|
||||
new_parent_token: &path.folder_token,
|
||||
owner_user_token: &user_session.user_token,
|
||||
mysql_executor: &mut *conn,
|
||||
phantom: PhantomData,
|
||||
|
||||
+2
-3
@@ -25,7 +25,7 @@ const MAX_BULK: usize = 500;
|
||||
put,
|
||||
tag = "Folders",
|
||||
path = "/v1/folders/subfolders/{folder_token}/bulk_remove",
|
||||
params(("folder_token" = String, description = "Parent folder token")),
|
||||
params(("folder_token" = FolderToken, description = "Parent folder token")),
|
||||
request_body = BulkRemoveSubfoldersRequest,
|
||||
responses(
|
||||
(status = 200, body = BulkRemoveSubfoldersSuccessResponse),
|
||||
@@ -55,14 +55,13 @@ pub async fn bulk_remove_subfolders_handler(
|
||||
));
|
||||
}
|
||||
|
||||
let from_parent_token = FolderToken::new_from_str(path.folder_token.trim());
|
||||
|
||||
// No parent existence check — the UPDATE's WHERE clause already gates
|
||||
// on owner_user_token AND current parent, so this is naturally a no-op
|
||||
// for rows we shouldn't touch.
|
||||
let removed_count = bulk_clear_parent_folder(BulkClearParentFolderArgs {
|
||||
child_tokens: &request.subfolder_tokens,
|
||||
from_parent_token: &from_parent_token,
|
||||
from_parent_token: &path.folder_token,
|
||||
owner_user_token: &user_session.user_token,
|
||||
mysql_executor: &mut *conn,
|
||||
phantom: PhantomData,
|
||||
|
||||
+3
-4
@@ -30,7 +30,7 @@ const MAX_LIMIT: u32 = 1000;
|
||||
tag = "Folders",
|
||||
path = "/v1/folders/subfolders/{folder_token}",
|
||||
params(
|
||||
("folder_token" = String, description = "Parent folder token"),
|
||||
("folder_token" = FolderToken, description = "Parent folder token"),
|
||||
ListSubfoldersQueryParams,
|
||||
),
|
||||
responses(
|
||||
@@ -56,11 +56,10 @@ pub async fn list_subfolders_handler(
|
||||
&http_request, &server_state.session_checker, &mut conn,
|
||||
).await.map_err(|_| CommonWebError::NotAuthorized)?;
|
||||
|
||||
let parent_token = FolderToken::new_from_str(path.folder_token.trim());
|
||||
|
||||
// Confirm the parent exists + is owned by the caller before listing.
|
||||
let parent = get_folder_for_owner(GetFolderForOwnerArgs {
|
||||
folder_token: &parent_token,
|
||||
folder_token: &path.folder_token,
|
||||
owner_user_token: &user_session.user_token,
|
||||
mysql_executor: &mut *conn,
|
||||
phantom: PhantomData,
|
||||
@@ -88,7 +87,7 @@ pub async fn list_subfolders_handler(
|
||||
};
|
||||
|
||||
let rows = list_subfolders(ListSubfoldersArgs {
|
||||
parent_folder_token: &parent_token,
|
||||
parent_folder_token: &path.folder_token,
|
||||
owner_user_token: &user_session.user_token,
|
||||
maybe_cursor_id,
|
||||
limit,
|
||||
|
||||
Reference in new issue
Block a user