削除

要件
ログインの有無 True
エンドポイント /v1/folders/:id
メソッド DELETE

概要

指定 ID のフォルダーを論理削除する。folders.owner_id がセッションの user_id と一致する場合のみ許可する。

物理削除・DB 行の DELETE は行わない。is_deleted = true および deleted_at の設定で論理削除とする(データベース設計の方針に準拠)。

必要なデータ

Headers

ヘッダー 必須
Cookie はい

Path parameters

キー 値の種類 必須 説明
id UUID はい フォルダー ID

Query parameters

キー 値の種類 必須 デフォルト 説明
to_home boolean いいえ false 子要素の扱い(後述)

レスポンス

ステータス 条件
204 No Content 削除成功(ボディなし)

エラーケース

HTTP code 条件
400 INVALID_INPUT id / to_home 不正
401 UNAUTHORIZED 未認証
404 NOT_FOUND 対象なし・既に削除済み・他ユーザーのフォルダー(存在秘匿のため 403 は返さない)

子要素の扱い(to_home

to_home サブフォルダー 配下ファイル(files.folder_id
false(既定) 再帰論理削除 — 子孫フォルダーも is_deleted=true 再帰論理削除 — 配下ファイルもゴミ箱扱い
true 直接の子フォルダーのみ folder_idNULL(ルートへ移動)。孫以下は親フォルダー(直接の子)に残る 直接の子ファイルのみ folder_idNULL(ルートへ移動)。孫フォルダー配下のファイルはそのまま

既定(to_home=false)ではフォルダー木ごと論理削除する。to_home=true のときのみ子をルートにばらまく。

再帰削除の方針

操作 再帰 説明
DELETE to_home=false あり 子孫フォルダー・配下ファイルをまとめて論理削除
DELETE to_home=true なし(移動のみ) 対象フォルダーの直接の子(サブフォルダー・ファイル)のみルートへ移動。孫以下は直接の子フォルダーに残る

論理削除 API では DB の FK ON DELETE 制約に頼らず、トランザクション内で is_deleted / folder_id / files を明示更新する。

実装要件

  • to_home=true 時: 子フォルダー・配下ファイルの folder_idNULL に更新してから対象フォルダーを論理削除
  • to_home=false 時: 子孫フォルダーと配下ファイルを再帰的に論理削除
  • files.folder_id への FK は物理削除時 ON DELETE SET NULLapps/api/src/entities/files.rs)— 論理削除ではアプリ層で制御
  • エラー形式: エラーレスポンスに準拠
  • 必要コンポーネント: PostgreSQL