diff --git a/db.ts b/db.ts index 7eefc29..9e05e51 100644 --- a/db.ts +++ b/db.ts @@ -95,7 +95,6 @@ const TASK_TABLE = `CREATE TABLE task ( type INT, gid INT, token TEXT, - pn INT, pid INT, details TEXT );`; @@ -156,7 +155,7 @@ export class EhDb { #lock_file: string | undefined; #dblock_file: string | undefined; #_tags: Map | undefined; - readonly version = new SemVer("1.0.0-4"); + readonly version = new SemVer("1.0.0-5"); constructor(base_path: string) { const db_path = join(base_path, "data.db"); sure_dir_sync(base_path); @@ -223,6 +222,9 @@ export class EhDb { this.db.execute("DROP TABLE pmeta_origin;"); need_optimize = true; } + if (v.compare("1.0.0-5") === -1) { + this.db.execute("ALTER TABLE task DROP pn;"); + } this.#write_version(); if (need_optimize) this.optimize(); } @@ -361,35 +363,32 @@ export class EhDb { add_task(task: Task) { return this.transaction(() => { this.db.query( - "INSERT INTO task (type, gid, token, pn, pid, details) VALUES (?, ?, ?, ?, ?, ?);", + "INSERT INTO task (type, gid, token, pid, details) VALUES (?, ?, ?, ?, ?);", [ task.type, task.gid, task.token, - task.pn, task.pid, task.details, ], ); if (task.details === null) { return this.db.queryEntries( - "SELECT * FROM task WHERE type = ? AND gid = ? AND token = ? AND pn = ? AND pid = ?;", + "SELECT * FROM task WHERE type = ? AND gid = ? AND token = ? AND pid = ?;", [ task.type, task.gid, task.token, - task.pn, task.pid, ], )[0]; } return this.db.queryEntries( - "SELECT * FROM task WHERE type = ? AND gid = ? AND token = ? AND pn = ? AND pid = ? AND details = ?;", + "SELECT * FROM task WHERE type = ? AND gid = ? AND token = ? AND pid = ? AND details = ?;", [ task.type, task.gid, task.token, - task.pn, task.pid, task.details, ], diff --git a/db_test.ts b/db_test.ts index 76db8f5..70cc2af 100644 --- a/db_test.ts +++ b/db_test.ts @@ -13,7 +13,6 @@ Deno.test("DbTest", async () => { gid: 1, token: "dd", pid: 1, - pn: 1, type: TaskType.Download, id: 0, details: null, @@ -24,7 +23,6 @@ Deno.test("DbTest", async () => { gid: 1, token: "dd", pid: 1, - pn: 1, type: TaskType.ExportZip, id: 0, details: "test", diff --git a/task.ts b/task.ts index 1e2ab32..89eec5b 100644 --- a/task.ts +++ b/task.ts @@ -8,7 +8,6 @@ export type Task = { type: TaskType; gid: number; token: string; - pn: number; pid: number; details: string | null; }; diff --git a/task_manager.ts b/task_manager.ts index 04e8b24..d76d665 100644 --- a/task_manager.ts +++ b/task_manager.ts @@ -43,7 +43,7 @@ export class TaskManager extends EventTarget { } async #add_task(task: Task) { const r = await this.db.add_task(task); - this.dispatchEvent(new CustomEvent("new_task", { detail: r })); + this.dispatchEvent("new_task", r); return r; } #check_closed() { @@ -78,7 +78,6 @@ export class TaskManager extends EventTarget { token, id: 0, pid: Deno.pid, - pn: 1, type: TaskType.Download, details: null, }; @@ -91,7 +90,6 @@ export class TaskManager extends EventTarget { token: "", id: 0, pid: Deno.pid, - pn: 0, type: TaskType.ExportZip, details: JSON.stringify(cfg), }; @@ -125,9 +123,7 @@ export class TaskManager extends EventTarget { if (status.status == PromiseStatus.Fulfilled && status.value) { removed_task.push(id); await this.db.delete_task(status.value); - this.dispatchEvent( - new CustomEvent("task_finished", { detail: status.value }), - ); + this.dispatchEvent("task_finished", status.value); } else if (status.status == PromiseStatus.Rejected) { if (status.reason && !this.aborted) console.log(status.reason); removed_task.push(id); @@ -145,6 +141,10 @@ export class TaskManager extends EventTarget { this.#closed = true; this.db.close(); } + // @ts-ignore Checked type + dispatchEvent(type: T, detail: EventMap[T]) { + return super.dispatchEvent(new CustomEvent(type, { detail })); + } force_abort(reason?: unknown) { this.#force_abort.abort(reason); } @@ -223,7 +223,7 @@ export class TaskManager extends EventTarget { ), ); } - this.dispatchEvent(new CustomEvent("task_started", { detail: task })); + this.dispatchEvent("task_started", task); } async waiting_unfinished_task() { while (1) {