feat: 플레이리스트 추가 화면 임시저장(draft) 기능
다운로드 시작 전, 수정해둔 값(플레이리스트 URL + 항목별 제목/ID/시작/길이/ ID모드/자릿수채우기)을 폴더당 1개 저장하고 나중에 불러올 수 있게 함. - db: playlist_drafts 테이블 (folder_id PK, JSON data, updated_at) - storeDb: savePlaylistDraft/getPlaylistDraft/deletePlaylistDraft - op: GET/POST/POST(delete) /playlist/draft (하위 폴더 한정) - UI: 임시저장 / 불러오기 / 삭제 버튼 + 진입 시 기존 draft 자동 감지 Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
This commit is contained in:
@@ -547,3 +547,34 @@ export async function moveUploadIntoVideoDir(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ─── 플레이리스트 임시저장(draft) ──────────────────────────────────────
|
||||
// 폴더당 1개의 작업중 상태(JSON 문자열)를 보관. 다운로드 시작 전 수정값을 저장/복원.
|
||||
|
||||
export interface PlaylistDraft {
|
||||
data: string
|
||||
updatedAt: string
|
||||
}
|
||||
|
||||
export function savePlaylistDraft(folderId: number, data: string): PlaylistDraft {
|
||||
const now = new Date().toISOString()
|
||||
getDb()
|
||||
.prepare(
|
||||
`INSERT INTO playlist_drafts (folder_id, data, updated_at)
|
||||
VALUES (?, ?, ?)
|
||||
ON CONFLICT(folder_id) DO UPDATE SET data = excluded.data, updated_at = excluded.updated_at`
|
||||
)
|
||||
.run(folderId, data, now)
|
||||
return { data, updatedAt: now }
|
||||
}
|
||||
|
||||
export function getPlaylistDraft(folderId: number): PlaylistDraft | null {
|
||||
const r = getDb()
|
||||
.prepare(`SELECT data, updated_at FROM playlist_drafts WHERE folder_id = ?`)
|
||||
.get(folderId) as { data: string; updated_at: string } | undefined
|
||||
return r ? { data: r.data, updatedAt: r.updated_at } : null
|
||||
}
|
||||
|
||||
export function deletePlaylistDraft(folderId: number): void {
|
||||
getDb().prepare(`DELETE FROM playlist_drafts WHERE folder_id = ?`).run(folderId)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user