init push
This commit is contained in:
241
docs/file-manager-delete-store.md
Normal file
241
docs/file-manager-delete-store.md
Normal file
@@ -0,0 +1,241 @@
|
||||
# File Manager
|
||||
|
||||
# Delete, Restore, Purge
|
||||
|
||||
## Ringkasan Endpoint Utama
|
||||
|
||||
1. `DELETE /api/v1/file-manager/delete` untuk soft delete bulk (file/folder)
|
||||
2. `PATCH /api/v1/file-manager/restore` untuk restore bulk (file/folder) ke lokasi asal
|
||||
3. `DELETE /api/v1/file-manager/purge-delete` untuk hard delete bulk (file/folder)
|
||||
4. `GET /api/v1/file-manager/trash/get-all` untuk list trash merged
|
||||
|
||||
## Catatan Kontrak
|
||||
|
||||
1. Tidak ada endpoint delete single.
|
||||
2. Tidak ada endpoint restore single.
|
||||
3. Gunakan endpoint bulk untuk delete/restore/purge.
|
||||
|
||||
## Step 1 - Soft Delete Node (Bulk)
|
||||
|
||||
### Endpoint
|
||||
- `DELETE /api/v1/file-manager/delete`
|
||||
|
||||
### Tujuan
|
||||
- soft delete file/folder (masuk trash)
|
||||
- jika folder di-delete, subtree (child folder + child file) ikut ke-trash
|
||||
|
||||
### Contoh request
|
||||
|
||||
```json
|
||||
{
|
||||
"data": [
|
||||
{ "uuid": "folder-uuid" },
|
||||
{ "uuid": "file-uuid" }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Contoh response
|
||||
|
||||
```json
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"index": 0,
|
||||
"success": true,
|
||||
"resource": {
|
||||
"type": "file_manager_delete_result",
|
||||
"id": "folder-uuid",
|
||||
"attributes": {
|
||||
"node_type": "folder",
|
||||
"status": "trashed"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"success": true,
|
||||
"resource": {
|
||||
"type": "file_manager_delete_result",
|
||||
"id": "file-uuid",
|
||||
"attributes": {
|
||||
"node_type": "file",
|
||||
"status": "trashed"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"total": 2,
|
||||
"success": 2,
|
||||
"failed": 0,
|
||||
"partial_success": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Step 3 - Lihat Trash
|
||||
|
||||
### Endpoint
|
||||
- `GET /api/v1/file-manager/trash/get-all`
|
||||
|
||||
### Tujuan
|
||||
- menampilkan data trash merged (folder + file)
|
||||
|
||||
### Contoh response
|
||||
|
||||
```json
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"type": "file_manager_trash_node",
|
||||
"id": "folder-uuid",
|
||||
"attributes": {
|
||||
"node_type": "folder",
|
||||
"name": "Documents",
|
||||
"path_cache": "/Documents",
|
||||
"trashed_at": "2026-04-01T10:00:00Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "file_manager_trash_node",
|
||||
"id": "file-uuid",
|
||||
"attributes": {
|
||||
"node_type": "file",
|
||||
"name": "LOGO.png",
|
||||
"extension": "png",
|
||||
"size_bytes": 100988,
|
||||
"mime_type": "image/png",
|
||||
"trashed_at": "2026-04-01T10:00:00Z"
|
||||
}
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"page_number": 1,
|
||||
"page_size": 20,
|
||||
"folders": 1,
|
||||
"files": 1,
|
||||
"total": 2
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Step 4 - Restore Node (Bulk, kembali ke lokasi asal)
|
||||
|
||||
### Endpoint
|
||||
- `PATCH /api/v1/file-manager/restore`
|
||||
|
||||
### Contoh request
|
||||
|
||||
```json
|
||||
{
|
||||
"data": [{ "uuid": "folder-uuid" }, { "uuid": "file-uuid" }]
|
||||
}
|
||||
```
|
||||
|
||||
Aturan:
|
||||
- restore tidak menerima `destination_folder_uuid` lagi
|
||||
- node akan kembali ke lokasi asal (parent/folder saat sebelum di-trash)
|
||||
- jika lokasi asal root, field `location` tidak dimunculkan
|
||||
|
||||
### Contoh response
|
||||
|
||||
```json
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"index": 0,
|
||||
"success": true,
|
||||
"resource": {
|
||||
"type": "file_manager_restore_result",
|
||||
"id": "folder-uuid",
|
||||
"attributes": {
|
||||
"node_type": "folder",
|
||||
"status": "ready"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"success": true,
|
||||
"resource": {
|
||||
"type": "file_manager_restore_result",
|
||||
"id": "file-uuid",
|
||||
"attributes": {
|
||||
"node_type": "file",
|
||||
"status": "ready",
|
||||
"location": {
|
||||
"folder_id": "folder-uuid-optional"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"total": 2,
|
||||
"success": 2,
|
||||
"failed": 0,
|
||||
"partial_success": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Step 5 - Purge Node (Hard Delete)
|
||||
|
||||
### Endpoint
|
||||
- `DELETE /api/v1/file-manager/purge-delete` (bulk)
|
||||
|
||||
### Tujuan
|
||||
- hapus permanen file atau folder (UUID bisa keduanya)
|
||||
- kalau UUID folder: subtree ikut dihapus permanen
|
||||
- kalau UUID file: file dihapus permanen
|
||||
|
||||
### Contoh request bulk
|
||||
|
||||
```json
|
||||
{
|
||||
"data": [
|
||||
{ "uuid": "folder-uuid" },
|
||||
{ "uuid": "file-uuid" }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Contoh response
|
||||
|
||||
```json
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"index": 0,
|
||||
"success": true,
|
||||
"resource": {
|
||||
"type": "file_manager_purge_result",
|
||||
"id": "folder-uuid",
|
||||
"attributes": {
|
||||
"node_type": "folder",
|
||||
"status": "purged"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"success": true,
|
||||
"resource": {
|
||||
"type": "file_manager_purge_result",
|
||||
"id": "file-uuid",
|
||||
"attributes": {
|
||||
"node_type": "file",
|
||||
"status": "purged"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"total": 2,
|
||||
"success": 2,
|
||||
"failed": 0,
|
||||
"partial_success": false
|
||||
}
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user