Update tasks progress

This commit is contained in:
2023-06-22 18:49:27 +08:00
parent 071c561c60
commit 168ceb0a50
3 changed files with 34 additions and 2 deletions

3
db.ts
View File

@@ -612,6 +612,9 @@ export class EhDb {
[token],
));
}
get_gallery_count() {
return this.db.query<[number]>("SELECT COUNT(*) FROM gmeta;")[0][0];
}
get_gids(offset = 0, limit = 20) {
return this.db.query<[number]>(
"SELECT gid FROM gmeta LIMIT ? OFFSET ?;",

View File

@@ -1,8 +1,16 @@
import { Task } from "../task.ts";
import { Task, TaskFixGalleryPageProgress, TaskType } from "../task.ts";
import { TaskManager } from "../task_manager.ts";
import { asyncForEach } from "../utils.ts";
export async function fix_gallery_page(t: Task, m: TaskManager) {
const p: TaskFixGalleryPageProgress = {
total_gallery: m.db.get_gallery_count(),
checked_gallery: 0,
};
const sendEvent = () => {
m.dispatchTaskProgressEvent(TaskType.FixGalleryPage, t.id, p);
};
sendEvent();
let offset = 0;
let gids = m.db.get_gids(offset);
while (gids.length) {
@@ -13,6 +21,8 @@ export async function fix_gallery_page(t: Task, m: TaskManager) {
if (gmeta.filecount != count) {
await m.add_download_task(gid, gmeta.token);
}
p.checked_gallery += 1;
sendEvent();
});
offset += gids.length;
gids = m.db.get_gids(offset);

View File

@@ -1,4 +1,4 @@
import { Task } from "../task.ts";
import { Task, TaskType, TaskUpdateMeiliSearchDataProgress } from "../task.ts";
import { TaskManager } from "../task_manager.ts";
export async function update_meili_search_data(
@@ -6,14 +6,33 @@ export async function update_meili_search_data(
manager: TaskManager,
) {
if (!manager.meilisearch) throw Error("MeiliServer not found.");
const progress: TaskUpdateMeiliSearchDataProgress = {
total_gallery: 0,
updated_gallery: 0,
};
const sendEvent = () => {
manager.dispatchTaskProgressEvent(
TaskType.UpdateMeiliSearchData,
task.id,
progress,
);
};
if (task.gid !== 0) {
progress.total_gallery = 1;
sendEvent();
await manager.meilisearch.updateGallery(task.gid);
progress.updated_gallery = 1;
sendEvent();
} else {
progress.total_gallery = manager.db.get_gallery_count();
sendEvent();
let i = manager.db.get_gids();
let offset = 0;
while (i.length) {
await manager.meilisearch.updateGallery(...i);
offset += i.length;
progress.updated_gallery = offset;
sendEvent();
i = manager.db.get_gids(offset);
}
}