From c89da616c689fda793a0d69fa8df58d31b680322 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Fri, 29 May 2026 23:42:55 +0800 Subject: [PATCH] refactor: clean code --- .../deployer/providers/aliyun-fc/aliyun_fc.go | 8 ++--- .../deployer/providers/netlify/netlify.go | 2 +- pkg/core/deployer/providers/vercel/vercel.go | 2 +- pkg/logging/handler_hook.go | 25 +++++++------- .../btpanelgo/api_config_set_panel_ssl.go | 2 +- .../btpanelgo/api_datalist_get_data_list.go | 2 +- pkg/sdk3rd/btpanelgo/api_files_upload.go | 2 +- pkg/sdk3rd/btpanelgo/api_panel_get_config.go | 2 +- .../btpanelgo/api_site_get_project_list.go | 2 +- .../btpanelgo/api_site_set_site_pfx_ssl.go | 2 +- pkg/sdk3rd/btpanelgo/api_site_set_site_ssl.go | 2 +- pkg/sdk3rd/btpanelgo/client.go | 2 +- pkg/sdk3rd/btpanelgo/types.go | 2 +- pkg/sdk3rd/cpanel/api_ssl_install_ssl.go | 2 +- pkg/sdk3rd/cpanel/client.go | 2 +- pkg/sdk3rd/cpanel/types.go | 2 +- pkg/sdk3rd/gcore/endpoint.go | 2 +- pkg/sdk3rd/gcore/signer.go | 2 +- .../api_provision_site_tls_certificate.go | 6 ++-- pkg/sdk3rd/vercel/api_upload_cert.go | 6 ++-- ui/src/repository/access.ts | 29 ++++++++-------- ui/src/repository/admin.ts | 11 ++++--- ui/src/repository/certificate.ts | 28 +++++++--------- ui/src/repository/settings.ts | 9 +++-- ui/src/repository/system.ts | 10 +++--- ui/src/repository/workflow.ts | 33 ++++++++----------- ui/src/repository/workflowLog.ts | 8 ++--- ui/src/repository/workflowRun.ts | 28 +++++++--------- 28 files changed, 113 insertions(+), 120 deletions(-) diff --git a/pkg/core/deployer/providers/aliyun-fc/aliyun_fc.go b/pkg/core/deployer/providers/aliyun-fc/aliyun_fc.go index 1c50447fa..0b804e5dd 100644 --- a/pkg/core/deployer/providers/aliyun-fc/aliyun_fc.go +++ b/pkg/core/deployer/providers/aliyun-fc/aliyun_fc.go @@ -78,13 +78,13 @@ func (d *Deployer) SetLogger(logger *slog.Logger) { func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) { switch d.config.ServiceVersion { - case "3", "3.0": - if err := d.deployToFC3(ctx, certPEM, privkeyPEM); err != nil { + case "2", "2.0": + if err := d.deployToFC2(ctx, certPEM, privkeyPEM); err != nil { return nil, err } - case "2", "2.0": - if err := d.deployToFC2(ctx, certPEM, privkeyPEM); err != nil { + case "3", "3.0": + if err := d.deployToFC3(ctx, certPEM, privkeyPEM); err != nil { return nil, err } diff --git a/pkg/core/deployer/providers/netlify/netlify.go b/pkg/core/deployer/providers/netlify/netlify.go index c3745599f..54899392b 100644 --- a/pkg/core/deployer/providers/netlify/netlify.go +++ b/pkg/core/deployer/providers/netlify/netlify.go @@ -81,7 +81,7 @@ func (d *Deployer) deployToWebsite(ctx context.Context, certPEM, privkeyPEM stri // 上传网站证书 // REF: https://open-api.netlify.com/#tag/sniCertificate/operation/provisionSiteTLSCertificate - provisionSiteTLSCertificateReq := &netlifysdk.ProvisionSiteTLSCertificateParams{ + provisionSiteTLSCertificateReq := &netlifysdk.ProvisionSiteTLSCertificateRequest{ Certificate: serverCertPEM, CACertificates: intermediaCertPEM, Key: privkeyPEM, diff --git a/pkg/core/deployer/providers/vercel/vercel.go b/pkg/core/deployer/providers/vercel/vercel.go index 542067474..2c46a480d 100644 --- a/pkg/core/deployer/providers/vercel/vercel.go +++ b/pkg/core/deployer/providers/vercel/vercel.go @@ -59,7 +59,7 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*dep // 上传证书 // REF: https://vercel.com/docs/rest-api/certs/upload-a-cert - uploadCertReq := &vercelsdk.UploadCertParams{ + uploadCertReq := &vercelsdk.UploadCertRequest{ CA: intermediaCertPEM, Cert: serverCertPEM, Key: privkeyPEM, diff --git a/pkg/logging/handler_hook.go b/pkg/logging/handler_hook.go index 8734f3671..6065b87cc 100644 --- a/pkg/logging/handler_hook.go +++ b/pkg/logging/handler_hook.go @@ -2,6 +2,7 @@ package logging import ( "context" + "errors" "log/slog" "sync" ) @@ -102,12 +103,22 @@ func (h *HookHandler) Handle(ctx context.Context, r slog.Record) error { return h.parent.Handle(ctx, r) } + errs := make([]error, 0) + if h.base != nil { - h.base.Handle(ctx, r) + if err := h.base.Handle(ctx, r); err != nil { + errs = append(errs, err) + } } - if err := h.writeRecord(ctx, Record{Record: r}); err != nil { - return err + if h.options.WriteFunc != nil { + if err := h.options.WriteFunc(ctx, Record{Record: r}); err != nil { + errs = append(errs, err) + } + } + + if len(errs) > 0 { + return errors.Join(errs...) } return nil @@ -118,11 +129,3 @@ func (h *HookHandler) SetLevel(level slog.Level) { h.options.Level = level h.mutex.Unlock() } - -func (h *HookHandler) writeRecord(ctx context.Context, r Record) error { - if h.parent != nil { - return h.parent.writeRecord(ctx, r) - } - - return h.options.WriteFunc(ctx, r) -} diff --git a/pkg/sdk3rd/btpanelgo/api_config_set_panel_ssl.go b/pkg/sdk3rd/btpanelgo/api_config_set_panel_ssl.go index 158142c96..92b587fbf 100644 --- a/pkg/sdk3rd/btpanelgo/api_config_set_panel_ssl.go +++ b/pkg/sdk3rd/btpanelgo/api_config_set_panel_ssl.go @@ -1,4 +1,4 @@ -package btpanel +package btpanelgo import ( "context" diff --git a/pkg/sdk3rd/btpanelgo/api_datalist_get_data_list.go b/pkg/sdk3rd/btpanelgo/api_datalist_get_data_list.go index c511a818e..508640c45 100644 --- a/pkg/sdk3rd/btpanelgo/api_datalist_get_data_list.go +++ b/pkg/sdk3rd/btpanelgo/api_datalist_get_data_list.go @@ -1,4 +1,4 @@ -package btpanel +package btpanelgo import ( "context" diff --git a/pkg/sdk3rd/btpanelgo/api_files_upload.go b/pkg/sdk3rd/btpanelgo/api_files_upload.go index e7c01f5c4..537c8a021 100644 --- a/pkg/sdk3rd/btpanelgo/api_files_upload.go +++ b/pkg/sdk3rd/btpanelgo/api_files_upload.go @@ -1,4 +1,4 @@ -package btpanel +package btpanelgo import ( "context" diff --git a/pkg/sdk3rd/btpanelgo/api_panel_get_config.go b/pkg/sdk3rd/btpanelgo/api_panel_get_config.go index 5cec728dd..e6d3c1c93 100644 --- a/pkg/sdk3rd/btpanelgo/api_panel_get_config.go +++ b/pkg/sdk3rd/btpanelgo/api_panel_get_config.go @@ -1,4 +1,4 @@ -package btpanel +package btpanelgo import ( "context" diff --git a/pkg/sdk3rd/btpanelgo/api_site_get_project_list.go b/pkg/sdk3rd/btpanelgo/api_site_get_project_list.go index afd18f027..7b2e937fd 100644 --- a/pkg/sdk3rd/btpanelgo/api_site_get_project_list.go +++ b/pkg/sdk3rd/btpanelgo/api_site_get_project_list.go @@ -1,4 +1,4 @@ -package btpanel +package btpanelgo import ( "context" diff --git a/pkg/sdk3rd/btpanelgo/api_site_set_site_pfx_ssl.go b/pkg/sdk3rd/btpanelgo/api_site_set_site_pfx_ssl.go index dc6c0668c..b0b3a58aa 100644 --- a/pkg/sdk3rd/btpanelgo/api_site_set_site_pfx_ssl.go +++ b/pkg/sdk3rd/btpanelgo/api_site_set_site_pfx_ssl.go @@ -1,4 +1,4 @@ -package btpanel +package btpanelgo import ( "context" diff --git a/pkg/sdk3rd/btpanelgo/api_site_set_site_ssl.go b/pkg/sdk3rd/btpanelgo/api_site_set_site_ssl.go index 1216fe509..6d8ff3bd9 100644 --- a/pkg/sdk3rd/btpanelgo/api_site_set_site_ssl.go +++ b/pkg/sdk3rd/btpanelgo/api_site_set_site_ssl.go @@ -1,4 +1,4 @@ -package btpanel +package btpanelgo import ( "context" diff --git a/pkg/sdk3rd/btpanelgo/client.go b/pkg/sdk3rd/btpanelgo/client.go index 9e0c2b205..dbe1c62f2 100644 --- a/pkg/sdk3rd/btpanelgo/client.go +++ b/pkg/sdk3rd/btpanelgo/client.go @@ -1,4 +1,4 @@ -package btpanel +package btpanelgo import ( "bytes" diff --git a/pkg/sdk3rd/btpanelgo/types.go b/pkg/sdk3rd/btpanelgo/types.go index 5024d226d..af5af5418 100644 --- a/pkg/sdk3rd/btpanelgo/types.go +++ b/pkg/sdk3rd/btpanelgo/types.go @@ -1,4 +1,4 @@ -package btpanel +package btpanelgo import ( "encoding/json" diff --git a/pkg/sdk3rd/cpanel/api_ssl_install_ssl.go b/pkg/sdk3rd/cpanel/api_ssl_install_ssl.go index 52b3c39b0..c08067229 100644 --- a/pkg/sdk3rd/cpanel/api_ssl_install_ssl.go +++ b/pkg/sdk3rd/cpanel/api_ssl_install_ssl.go @@ -1,4 +1,4 @@ -package baishan +package cpanel import ( "context" diff --git a/pkg/sdk3rd/cpanel/client.go b/pkg/sdk3rd/cpanel/client.go index fc97cf603..f7e15911a 100644 --- a/pkg/sdk3rd/cpanel/client.go +++ b/pkg/sdk3rd/cpanel/client.go @@ -1,4 +1,4 @@ -package baishan +package cpanel import ( "crypto/tls" diff --git a/pkg/sdk3rd/cpanel/types.go b/pkg/sdk3rd/cpanel/types.go index bb4715949..9f0597f4a 100644 --- a/pkg/sdk3rd/cpanel/types.go +++ b/pkg/sdk3rd/cpanel/types.go @@ -1,4 +1,4 @@ -package baishan +package cpanel type sdkResponse interface { GetStatus() int diff --git a/pkg/sdk3rd/gcore/endpoint.go b/pkg/sdk3rd/gcore/endpoint.go index 5e0279513..015f881eb 100644 --- a/pkg/sdk3rd/gcore/endpoint.go +++ b/pkg/sdk3rd/gcore/endpoint.go @@ -1,3 +1,3 @@ -package common +package gcore const BASE_URL = "https://api.gcore.com" diff --git a/pkg/sdk3rd/gcore/signer.go b/pkg/sdk3rd/gcore/signer.go index b0aff7e6e..9ab4785a8 100644 --- a/pkg/sdk3rd/gcore/signer.go +++ b/pkg/sdk3rd/gcore/signer.go @@ -1,4 +1,4 @@ -package common +package gcore import ( "net/http" diff --git a/pkg/sdk3rd/netlify/api_provision_site_tls_certificate.go b/pkg/sdk3rd/netlify/api_provision_site_tls_certificate.go index dfe9ff7ae..5f333f7f8 100644 --- a/pkg/sdk3rd/netlify/api_provision_site_tls_certificate.go +++ b/pkg/sdk3rd/netlify/api_provision_site_tls_certificate.go @@ -7,7 +7,7 @@ import ( "net/url" ) -type ProvisionSiteTLSCertificateParams struct { +type ProvisionSiteTLSCertificateRequest struct { Certificate string `json:"certificate"` CACertificates string `json:"ca_certificates"` Key string `json:"key"` @@ -22,11 +22,11 @@ type ProvisionSiteTLSCertificateResponse struct { UpdatedAt string `json:"updated_at,omitempty"` } -func (c *Client) ProvisionSiteTLSCertificate(siteId string, req *ProvisionSiteTLSCertificateParams) (*ProvisionSiteTLSCertificateResponse, error) { +func (c *Client) ProvisionSiteTLSCertificate(siteId string, req *ProvisionSiteTLSCertificateRequest) (*ProvisionSiteTLSCertificateResponse, error) { return c.ProvisionSiteTLSCertificateWithContext(context.Background(), siteId, req) } -func (c *Client) ProvisionSiteTLSCertificateWithContext(ctx context.Context, siteId string, req *ProvisionSiteTLSCertificateParams) (*ProvisionSiteTLSCertificateResponse, error) { +func (c *Client) ProvisionSiteTLSCertificateWithContext(ctx context.Context, siteId string, req *ProvisionSiteTLSCertificateRequest) (*ProvisionSiteTLSCertificateResponse, error) { if siteId == "" { return nil, fmt.Errorf("sdkerr: unset siteId") } diff --git a/pkg/sdk3rd/vercel/api_upload_cert.go b/pkg/sdk3rd/vercel/api_upload_cert.go index 58ccf931d..a234afe55 100644 --- a/pkg/sdk3rd/vercel/api_upload_cert.go +++ b/pkg/sdk3rd/vercel/api_upload_cert.go @@ -5,7 +5,7 @@ import ( "net/http" ) -type UploadCertParams struct { +type UploadCertRequest struct { CA string `json:"ca"` Cert string `json:"cert"` Key string `json:"key"` @@ -19,11 +19,11 @@ type UploadCertResponse struct { CreatedAt string `json:"createdAt,omitempty"` } -func (c *Client) UploadCert(req *UploadCertParams) (*UploadCertResponse, error) { +func (c *Client) UploadCert(req *UploadCertRequest) (*UploadCertResponse, error) { return c.UploadCertWithContext(context.Background(), req) } -func (c *Client) UploadCertWithContext(ctx context.Context, req *UploadCertParams) (*UploadCertResponse, error) { +func (c *Client) UploadCertWithContext(ctx context.Context, req *UploadCertRequest) (*UploadCertResponse, error) { httpreq, err := c.newRequest(http.MethodPut, "/certs") if err != nil { return nil, err diff --git a/ui/src/repository/access.ts b/ui/src/repository/access.ts index a966ed182..3ed4f2ad5 100644 --- a/ui/src/repository/access.ts +++ b/ui/src/repository/access.ts @@ -3,18 +3,19 @@ import dayjs from "dayjs"; import { type AccessModel } from "@/domain/access"; import { COLLECTION_NAME_ACCESS, getPocketBase } from "./_pocketbase"; +const pb = getPocketBase(); +const pbco = pb.collection(COLLECTION_NAME_ACCESS); + const _commonFields = ["id", "name", "provider", "reserve", "created", "updated", "deleted"]; export const list = async () => { - const list = await getPocketBase() - .collection(COLLECTION_NAME_ACCESS) - .getFullList({ - batch: 65535, - fields: [..._commonFields].join(","), - filter: "deleted=null", - sort: "-created", - requestKey: null, - }); + const list = await pbco.getFullList({ + batch: 65535, + fields: [..._commonFields].join(","), + filter: "deleted=null", + sort: "-created", + requestKey: null, + }); return { totalItems: list.length, items: list, @@ -22,22 +23,20 @@ export const list = async () => { }; export const get = async (id: string) => { - return await getPocketBase().collection(COLLECTION_NAME_ACCESS).getOne(id, { + return await pbco.getOne(id, { requestKey: null, }); }; export const save = async (record: MaybeModelRecord) => { if (record.id) { - return await getPocketBase().collection(COLLECTION_NAME_ACCESS).update(record.id, record); + return await pbco.update(record.id, record); } - return await getPocketBase().collection(COLLECTION_NAME_ACCESS).create(record); + return await pbco.create(record); }; export const remove = async (record: MaybeModelRecordWithId | MaybeModelRecordWithId[]) => { - const pb = getPocketBase(); - const deletedAt = dayjs.utc().format("YYYY-MM-DD HH:mm:ss"); if (Array.isArray(record)) { @@ -48,7 +47,7 @@ export const remove = async (record: MaybeModelRecordWithId | Maybe const res = await batch.send(); return res.every((e) => e.status >= 200 && e.status < 400); } else { - await pb.collection(COLLECTION_NAME_ACCESS).update(record.id!, { deleted: deletedAt }); + await pbco.update(record.id!, { deleted: deletedAt }); return true; } }; diff --git a/ui/src/repository/admin.ts b/ui/src/repository/admin.ts index da8ae5c39..d0b8e73af 100644 --- a/ui/src/repository/admin.ts +++ b/ui/src/repository/admin.ts @@ -1,15 +1,16 @@ import { COLLECTION_NAME_ADMIN, getPocketBase } from "./_pocketbase"; +const pb = getPocketBase(); +const pbco = pb.collection(COLLECTION_NAME_ADMIN); + export const authWithPassword = (username: string, password: string) => { - return getPocketBase().collection(COLLECTION_NAME_ADMIN).authWithPassword(username, password); + return pbco.authWithPassword(username, password); }; export const getAuthStore = () => { - return getPocketBase().authStore; + return pb.authStore; }; export const save = (data: { email: string } | { password: string; passwordConfirm: string }) => { - return getPocketBase() - .collection(COLLECTION_NAME_ADMIN) - .update(getAuthStore().record?.id || "", data); + return pbco.update(getAuthStore().record?.id || "", data); }; diff --git a/ui/src/repository/certificate.ts b/ui/src/repository/certificate.ts index 4478993d2..bfc5622a4 100644 --- a/ui/src/repository/certificate.ts +++ b/ui/src/repository/certificate.ts @@ -3,6 +3,9 @@ import dayjs from "dayjs"; import { type CertificateModel } from "@/domain/certificate"; import { COLLECTION_NAME_CERTIFICATE, getPocketBase } from "./_pocketbase"; +const pb = getPocketBase(); +const pbco = pb.collection(COLLECTION_NAME_CERTIFICATE); + const _commonFields = [ "id", "source", @@ -37,8 +40,6 @@ export const list = async ({ page?: number; perPage?: number; }) => { - const pb = getPocketBase(); - const filters: string[] = ["deleted=null"]; if (keyword) { filters.push(pb.filter("(id={:keyword} || serialNumber={:keyword} || subjectAltNames~{:keyword})", { keyword: keyword })); @@ -51,7 +52,7 @@ export const list = async ({ filters.push(pb.filter("validityNotAfter<=@now")); } - return pb.collection(COLLECTION_NAME_CERTIFICATE).getList(page, perPage, { + return pbco.getList(page, perPage, { expand: ["workflowRef"].join(","), fields: [..._commonFields, ..._expandFields].join(","), filter: filters.join(" && "), @@ -61,16 +62,13 @@ export const list = async ({ }; export const listByWorkflowRunId = async (workflowRunId: string) => { - const pb = getPocketBase(); - - const list = await pb.collection(COLLECTION_NAME_CERTIFICATE).getFullList({ + const list = await pbco.getFullList({ batch: 65535, fields: [..._commonFields, ..._expandFields, "certificate", "privateKey"].join(","), filter: pb.filter("workflowRunRef={:workflowRunId}", { workflowRunId }), sort: "created", requestKey: null, }); - return { totalItems: list.length, items: list, @@ -78,18 +76,14 @@ export const listByWorkflowRunId = async (workflowRunId: string) => { }; export const get = async (id: string) => { - return await getPocketBase() - .collection(COLLECTION_NAME_CERTIFICATE) - .getOne(id, { - expand: ["workflowRef"].join(","), - fields: ["*", ..._expandFields].join(","), - requestKey: null, - }); + return pbco.getOne(id, { + expand: ["workflowRef"].join(","), + fields: ["*", ..._expandFields].join(","), + requestKey: null, + }); }; export const remove = async (record: MaybeModelRecordWithId | MaybeModelRecordWithId[]) => { - const pb = getPocketBase(); - const deletedAt = dayjs.utc().format("YYYY-MM-DD HH:mm:ss"); if (Array.isArray(record)) { @@ -100,7 +94,7 @@ export const remove = async (record: MaybeModelRecordWithId | const res = await batch.send(); return res.every((e) => e.status >= 200 && e.status < 400); } else { - await pb.collection(COLLECTION_NAME_CERTIFICATE).update(record.id!, { deleted: deletedAt }); + await pbco.update(record.id!, { deleted: deletedAt }); return true; } }; diff --git a/ui/src/repository/settings.ts b/ui/src/repository/settings.ts index 89cd9a6be..01fef38c7 100644 --- a/ui/src/repository/settings.ts +++ b/ui/src/repository/settings.ts @@ -14,6 +14,9 @@ import { import { COLLECTION_NAME_SETTINGS, getPocketBase } from "./_pocketbase"; +const pb = getPocketBase(); +const pbco = pb.collection(COLLECTION_NAME_SETTINGS); + interface SettingsContentMap { [SETTINGS_NAMES.EMAILS]: EmailsSettingsContent; [SETTINGS_NAMES.NOTIFY_TEMPLATE]: NotifyTemplateContent; @@ -27,7 +30,7 @@ export const get = async : SettingsModel> => { let resp: K extends keyof SettingsContentMap ? SettingsModel : SettingsModel; try { - resp = await getPocketBase().collection(COLLECTION_NAME_SETTINGS).getFirstListItem(`name='${name}'`, { + resp = await pbco.getFirstListItem(`name='${name}'`, { requestKey: null, }); return resp; @@ -87,8 +90,8 @@ export const get = async >(record: MaybeModelRecordWithId>) => { if (record.id) { - return await getPocketBase().collection(COLLECTION_NAME_SETTINGS).update>(record.id, record); + return await pbco.update>(record.id, record); } - return await getPocketBase().collection(COLLECTION_NAME_SETTINGS).create>(record); + return await pbco.create>(record); }; diff --git a/ui/src/repository/system.ts b/ui/src/repository/system.ts index 6d8fae360..d0bd0fc15 100644 --- a/ui/src/repository/system.ts +++ b/ui/src/repository/system.ts @@ -1,8 +1,10 @@ import { getPocketBase } from "./_pocketbase"; +const pb = getPocketBase(); + export const listCronJobs = () => { - return getPocketBase() - .crons.getFullList({ + return pb.crons + .getFullList({ requestKey: null, }) .then((res) => { @@ -29,8 +31,8 @@ export const listLogs = (request: ListLogsRequest) => { const page = request.page || 1; const perPage = request.perPage || 10; - return getPocketBase() - .logs.getList(page, perPage, { + return pb.logs + .getList(page, perPage, { filter: 'data.type!="request"', sort: "-@rowid", skipTotal: true, diff --git a/ui/src/repository/workflow.ts b/ui/src/repository/workflow.ts index 87bf101b6..a5f4cfd23 100644 --- a/ui/src/repository/workflow.ts +++ b/ui/src/repository/workflow.ts @@ -3,6 +3,9 @@ import { type RecordSubscription } from "pocketbase"; import { type WorkflowModel } from "@/domain/workflow"; import { COLLECTION_NAME_WORKFLOW, getPocketBase } from "./_pocketbase"; +const pb = getPocketBase(); +const pbco = pb.collection(COLLECTION_NAME_WORKFLOW); + const _commonFields = [ "id", "name", @@ -43,8 +46,6 @@ export const list = async ({ perPage?: number; expand?: boolean; }) => { - const pb = getPocketBase(); - const filters: string[] = []; if (keyword) { filters.push(pb.filter("(id={:keyword} || name~{:keyword})", { keyword: keyword })); @@ -53,7 +54,7 @@ export const list = async ({ filters.push(pb.filter("enabled={:enabled}", { enabled: enabled })); } - return await pb.collection(COLLECTION_NAME_WORKFLOW).getList(page, perPage, { + return await pbco.getList(page, perPage, { expand: expand ? ["lastRunRef"].join(",") : void 0, fields: [..._commonFields, ..._expandFields].join(","), filter: filters.join(" && "), @@ -63,28 +64,22 @@ export const list = async ({ }; export const get = async (id: string) => { - return await getPocketBase() - .collection(COLLECTION_NAME_WORKFLOW) - .getOne(id, { - expand: ["lastRunRef"].join(","), - fields: ["*", ..._expandFields].join(","), - requestKey: null, - }); + return await pbco.getOne(id, { + expand: ["lastRunRef"].join(","), + fields: ["*", ..._expandFields].join(","), + requestKey: null, + }); }; export const save = async (record: MaybeModelRecord) => { if (record.id) { - return await getPocketBase() - .collection(COLLECTION_NAME_WORKFLOW) - .update(record.id as string, record); + return await pbco.update(record.id as string, record); } - return await getPocketBase().collection(COLLECTION_NAME_WORKFLOW).create(record); + return await pbco.create(record); }; export const remove = async (record: MaybeModelRecordWithId | MaybeModelRecordWithId[]) => { - const pb = getPocketBase(); - if (Array.isArray(record)) { const batch = pb.createBatch(); for (const item of record) { @@ -93,14 +88,14 @@ export const remove = async (record: MaybeModelRecordWithId | May const res = await batch.send(); return res.every((e) => e.status >= 200 && e.status < 400); } else { - return await pb.collection(COLLECTION_NAME_WORKFLOW).delete(record.id); + return await pbco.delete(record.id); } }; export const subscribe = async (id: string, cb: (e: RecordSubscription) => void) => { - return getPocketBase().collection(COLLECTION_NAME_WORKFLOW).subscribe(id, cb); + return pbco.subscribe(id, cb); }; export const unsubscribe = async (id: string) => { - return getPocketBase().collection(COLLECTION_NAME_WORKFLOW).unsubscribe(id); + return pbco.unsubscribe(id); }; diff --git a/ui/src/repository/workflowLog.ts b/ui/src/repository/workflowLog.ts index 4a972f903..2f7ac13ef 100644 --- a/ui/src/repository/workflowLog.ts +++ b/ui/src/repository/workflowLog.ts @@ -2,16 +2,16 @@ import { COLLECTION_NAME_WORKFLOW_LOG, getPocketBase } from "./_pocketbase"; -export const listByWorkflowRunId = async (workflowRunId: string) => { - const pb = getPocketBase(); +const pb = getPocketBase(); +const pbco = pb.collection(COLLECTION_NAME_WORKFLOW_LOG); - const list = await pb.collection(COLLECTION_NAME_WORKFLOW_LOG).getFullList({ +export const listByWorkflowRunId = async (workflowRunId: string) => { + const list = await pbco.getFullList({ batch: 65535, filter: pb.filter("runRef={:workflowRunId}", { workflowRunId }), sort: "timestamp", requestKey: null, }); - return { totalItems: list.length, items: list, diff --git a/ui/src/repository/workflowRun.ts b/ui/src/repository/workflowRun.ts index 8610c2a8a..58b4d45d5 100644 --- a/ui/src/repository/workflowRun.ts +++ b/ui/src/repository/workflowRun.ts @@ -4,6 +4,9 @@ import { type WorkflowRunModel } from "@/domain/workflowRun"; import { COLLECTION_NAME_WORKFLOW_OUTPUT, COLLECTION_NAME_WORKFLOW_RUN, getPocketBase } from "./_pocketbase"; +const pb = getPocketBase(); +const pbco = pb.collection(COLLECTION_NAME_WORKFLOW_RUN); + const _commonFields = ["id", "status", "trigger", "startedAt", "endedAt", "error", "created", "updated", "deleted"]; const _expandFields = ["expand.workflowRef.id", "expand.workflowRef.name", "expand.workflowRef.description"]; @@ -18,14 +21,12 @@ export const list = async ({ perPage?: number; expand?: boolean; }) => { - const pb = getPocketBase(); - const filters: string[] = []; if (workflowId) { filters.push(pb.filter("workflowRef={:workflowId}", { workflowId: workflowId })); } - const list = await pb.collection(COLLECTION_NAME_WORKFLOW_RUN).getList(page, perPage, { + const list = await pbco.getList(page, perPage, { expand: expand ? ["workflowRef"].join(",") : void 0, fields: [..._commonFields, ..._expandFields].join(","), filter: filters.join(" && "), @@ -37,20 +38,16 @@ export const list = async ({ }; export const get = async (id: string) => { - const record = await getPocketBase() - .collection(COLLECTION_NAME_WORKFLOW_RUN) - .getOne(id, { - expand: ["workflowRef"].join(","), - fields: ["*", ..._expandFields].join(","), - requestKey: null, - }); + const record = await pbco.getOne(id, { + expand: ["workflowRef"].join(","), + fields: ["*", ..._expandFields].join(","), + requestKey: null, + }); await enrichOutputs(record); return record; }; export const remove = async (record: MaybeModelRecordWithId | MaybeModelRecordWithId[]) => { - const pb = getPocketBase(); - if (Array.isArray(record)) { const batch = pb.createBatch(); for (const item of record) { @@ -59,17 +56,17 @@ export const remove = async (record: MaybeModelRecordWithId | const res = await batch.send(); return res.every((e) => e.status >= 200 && e.status < 400); } else { - await pb.collection(COLLECTION_NAME_WORKFLOW_RUN).delete(record.id!); + await pbco.delete(record.id!); return true; } }; export const subscribe = async (id: string, cb: (e: RecordSubscription) => void) => { - return getPocketBase().collection(COLLECTION_NAME_WORKFLOW_RUN).subscribe(id, cb); + return pbco.subscribe(id, cb); }; export const unsubscribe = async (id: string) => { - return getPocketBase().collection(COLLECTION_NAME_WORKFLOW_RUN).unsubscribe(id); + return pbco.unsubscribe(id); }; const enrichOutputs = async (records: WorkflowRunModel | WorkflowRunModel[]) => { @@ -82,7 +79,6 @@ const enrichOutputs = async (records: WorkflowRunModel | WorkflowRunModel[]) => return; } - const pb = getPocketBase(); const list = await pb.collection(COLLECTION_NAME_WORKFLOW_OUTPUT).getFullList({ batch: 65535, fields: ["id", "runRef", "outputs"].join(","),