diff --git a/packages/ui/src/common/types/pagination.ts b/packages/ui/src/common/types/pagination.ts new file mode 100644 index 0000000..17c06c0 --- /dev/null +++ b/packages/ui/src/common/types/pagination.ts @@ -0,0 +1,9 @@ +export interface PageReq { + pageNo: number + pageSize: number +} +export interface PagedRes { + data: T[] + pageNo: number + totalItemCount: number +} diff --git a/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/ipc/index.ts b/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/ipc/index.ts index 270c1db..6cbfdb0 100644 --- a/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/ipc/index.ts +++ b/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/ipc/index.ts @@ -17,9 +17,10 @@ import { getAnyAvailablePuppeteerExecutable } from '../../../flow/CHECK_AND_DOWN import { sleep } from '@geekgeekrun/utils/sleep.mjs' import { AUTO_CHAT_ERROR_EXIT_CODE } from '../../../../common/enums/auto-start-chat' import { mainWindow } from '../../../window/mainWindow' -import { getAutoStartChatRecord, initDbWorker } from '../utils/db/index' +import { getAutoStartChatRecord } from '../utils/db/index' +import { PageReq } from '../../../../common/types/pagination' -export default function initIpc () { +export default function initIpc() { ipcMain.on('open-external-link', (_, link) => { shell.openExternal(link, { activate: true @@ -259,8 +260,8 @@ export default function initIpc () { return checkCookieListFormat(cookies) }) - ipcMain.handle('get-auto-start-chat-record', async () => { - const a = await getAutoStartChatRecord() + ipcMain.handle('get-auto-start-chat-record', async (ev, payload: PageReq) => { + const a = await getAutoStartChatRecord(payload) return a }) } diff --git a/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/utils/db/index.ts b/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/utils/db/index.ts index d411e94..7f20e73 100644 --- a/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/utils/db/index.ts +++ b/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/utils/db/index.ts @@ -1,6 +1,7 @@ import createDbWorker from './worker/index?nodeWorker&url' import { type Worker } from 'node:worker_threads' import { randomUUID } from 'node:crypto' +import { PageReq } from '../../../../../common/types/pagination' let worker: Worker | null = null let workerExitCode: number | null = null @@ -49,9 +50,11 @@ const createWorkerPromise = async (data) => { }) } -export const getAutoStartChatRecord = async () => { +export const getAutoStartChatRecord = async ({ pageNo, pageSize }: Partial = {}) => { const res = await createWorkerPromise({ - type: 'getAutoStartChatRecord' + type: 'getAutoStartChatRecord', + pageNo, + pageSize }) return res } diff --git a/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/utils/db/worker/index.ts b/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/utils/db/worker/index.ts index ce1ebb3..b34529e 100644 --- a/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/utils/db/worker/index.ts +++ b/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/utils/db/worker/index.ts @@ -5,6 +5,7 @@ import { type DataSource } from 'typeorm' import { getPublicDbFilePath } from '@geekgeekrun/geek-auto-start-chat-with-boss/runtime-file-utils.mjs' import { VChatStartupLog } from '@geekgeekrun/sqlite-plugin/dist/entity/VChatStartupLog' import { measureExecutionTime } from '../../../../../../common/utils/performance' +import { PageReq, PagedRes } from '../../../../../../common/types/pagination' const dbInitPromise = initDb(getPublicDbFilePath()) let dataSource: DataSource | null = null @@ -27,16 +28,28 @@ dbInitPromise.then( ) const payloadHandler = { - async getAutoStartChatRecord(payload) { - const result = await measureExecutionTime( - dataSource! - .createQueryBuilder() - .select('*') - .from(VChatStartupLog, 'vChatStartupLog') - .getRawMany() + async getAutoStartChatRecord({ pageNo, pageSize }: Partial = {}): Promise< + PagedRes + > { + if (!pageNo) { + pageNo = 1 + } + if (!pageSize) { + pageSize = 10 + } + + const userRepository = dataSource!.getRepository(VChatStartupLog)! + const [data, totalItemCount] = await measureExecutionTime( + userRepository.findAndCount({ + skip: (pageNo - 1) * pageSize, + take: pageSize + }) ) - console.log(result) - return result + return { + data, + pageNo, + totalItemCount + } } } diff --git a/packages/ui/src/renderer/src/page/Configuration/StartChatRecord.vue b/packages/ui/src/renderer/src/page/Configuration/StartChatRecord.vue index 5ddd630..1cc2707 100644 --- a/packages/ui/src/renderer/src/page/Configuration/StartChatRecord.vue +++ b/packages/ui/src/renderer/src/page/Configuration/StartChatRecord.vue @@ -1,9 +1,11 @@