feat: search by keyword on AccessList, CertificateList, WorkflowList
This commit is contained in:
@@ -4,11 +4,16 @@ import { type AccessModel } from "@/domain/access";
|
||||
import { COLLECTION_NAME_ACCESS, getPocketBase } from "./_pocketbase";
|
||||
|
||||
export const list = async () => {
|
||||
return await getPocketBase().collection(COLLECTION_NAME_ACCESS).getFullList<AccessModel>({
|
||||
const list = await getPocketBase().collection(COLLECTION_NAME_ACCESS).getFullList<AccessModel>({
|
||||
batch: 65535,
|
||||
filter: "deleted=null",
|
||||
sort: "-created",
|
||||
requestKey: null,
|
||||
});
|
||||
return {
|
||||
totalItems: list.length,
|
||||
items: list,
|
||||
};
|
||||
};
|
||||
|
||||
export const save = async (record: MaybeModelRecord<AccessModel>) => {
|
||||
|
||||
@@ -1,55 +1,51 @@
|
||||
import dayjs from "dayjs";
|
||||
import { type RecordListOptions } from "pocketbase";
|
||||
|
||||
import { type CertificateModel } from "@/domain/certificate";
|
||||
import { COLLECTION_NAME_CERTIFICATE, getPocketBase } from "./_pocketbase";
|
||||
|
||||
export type ListCertificateRequest = {
|
||||
keyword?: string;
|
||||
state?: "expireSoon" | "expired";
|
||||
page?: number;
|
||||
perPage?: number;
|
||||
state?: "expireSoon" | "expired";
|
||||
};
|
||||
|
||||
export const list = async (request: ListCertificateRequest) => {
|
||||
const pb = getPocketBase();
|
||||
|
||||
const page = request.page || 1;
|
||||
const perPage = request.perPage || 10;
|
||||
|
||||
const options: RecordListOptions = {
|
||||
expand: "workflowId",
|
||||
filter: "deleted=null",
|
||||
sort: "-created",
|
||||
requestKey: null,
|
||||
};
|
||||
|
||||
const filters: string[] = ["deleted=null"];
|
||||
if (request.keyword) {
|
||||
filters.push(pb.filter("(subjectAltNames~{:keyword} || serialNumber={:keyword})", { keyword: request.keyword }));
|
||||
}
|
||||
if (request.state === "expireSoon") {
|
||||
options.filter = pb.filter("expireAt<{:expiredAt} && deleted=null", {
|
||||
expiredAt: dayjs().add(20, "d").toDate(),
|
||||
});
|
||||
filters.push(pb.filter("expireAt<{:expiredAt}", { expiredAt: dayjs().add(20, "d").toDate() }));
|
||||
} else if (request.state === "expired") {
|
||||
options.filter = pb.filter("expireAt<={:expiredAt} && deleted=null", {
|
||||
expiredAt: new Date(),
|
||||
});
|
||||
filters.push(pb.filter("expireAt<={:expiredAt}", { expiredAt: new Date() }));
|
||||
}
|
||||
|
||||
return pb.collection(COLLECTION_NAME_CERTIFICATE).getList<CertificateModel>(page, perPage, options);
|
||||
const page = request.page || 1;
|
||||
const perPage = request.perPage || 10;
|
||||
return pb.collection(COLLECTION_NAME_CERTIFICATE).getList<CertificateModel>(page, perPage, {
|
||||
expand: "workflowId",
|
||||
filter: filters.join(" && "),
|
||||
sort: "-created",
|
||||
requestKey: null,
|
||||
});
|
||||
};
|
||||
|
||||
export const listByWorkflowRunId = async (workflowRunId: string) => {
|
||||
const pb = getPocketBase();
|
||||
|
||||
const options: RecordListOptions = {
|
||||
filter: pb.filter("workflowRunId={:workflowRunId}", {
|
||||
workflowRunId: workflowRunId,
|
||||
}),
|
||||
const list = await pb.collection(COLLECTION_NAME_CERTIFICATE).getFullList<CertificateModel>({
|
||||
batch: 65535,
|
||||
filter: pb.filter("workflowRunId={:workflowRunId}", { workflowRunId: workflowRunId }),
|
||||
sort: "-created",
|
||||
requestKey: null,
|
||||
};
|
||||
const items = await pb.collection(COLLECTION_NAME_CERTIFICATE).getFullList<CertificateModel>(options);
|
||||
});
|
||||
|
||||
return {
|
||||
totalItems: items.length,
|
||||
items: items,
|
||||
totalItems: list.length,
|
||||
items: list,
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -1,30 +1,33 @@
|
||||
import { type RecordListOptions, type RecordSubscription } from "pocketbase";
|
||||
import { type RecordSubscription } from "pocketbase";
|
||||
|
||||
import { type WorkflowModel } from "@/domain/workflow";
|
||||
import { COLLECTION_NAME_WORKFLOW, getPocketBase } from "./_pocketbase";
|
||||
|
||||
export type ListWorkflowRequest = {
|
||||
keyword?: string;
|
||||
enabled?: boolean;
|
||||
page?: number;
|
||||
perPage?: number;
|
||||
enabled?: boolean;
|
||||
};
|
||||
|
||||
export const list = async (request: ListWorkflowRequest) => {
|
||||
const pb = getPocketBase();
|
||||
|
||||
const page = request.page || 1;
|
||||
const perPage = request.perPage || 10;
|
||||
|
||||
const options: RecordListOptions = {
|
||||
sort: "-created",
|
||||
requestKey: null,
|
||||
};
|
||||
|
||||
const filters: string[] = [];
|
||||
if (request.keyword) {
|
||||
filters.push(pb.filter("name~{:keyword}", { keyword: request.keyword }));
|
||||
}
|
||||
if (request.enabled != null) {
|
||||
options.filter = pb.filter("enabled={:enabled}", { enabled: request.enabled });
|
||||
filters.push(pb.filter("enabled={:enabled}", { enabled: request.enabled }));
|
||||
}
|
||||
|
||||
return await pb.collection(COLLECTION_NAME_WORKFLOW).getList<WorkflowModel>(page, perPage, options);
|
||||
const page = request.page || 1;
|
||||
const perPage = request.perPage || 10;
|
||||
return await pb.collection(COLLECTION_NAME_WORKFLOW).getList<WorkflowModel>(page, perPage, {
|
||||
filter: filters.join(" && "),
|
||||
sort: "-created",
|
||||
requestKey: null,
|
||||
});
|
||||
};
|
||||
|
||||
export const get = async (id: string) => {
|
||||
|
||||
@@ -12,24 +12,21 @@ export type ListWorkflowRunsRequest = {
|
||||
};
|
||||
|
||||
export const list = async (request: ListWorkflowRunsRequest) => {
|
||||
const page = request.page || 1;
|
||||
const perPage = request.perPage || 10;
|
||||
const pb = getPocketBase();
|
||||
|
||||
let filter = "";
|
||||
const params: Record<string, string> = {};
|
||||
const filters: string[] = [];
|
||||
if (request.workflowId) {
|
||||
filter = `workflowId={:workflowId}`;
|
||||
params.workflowId = request.workflowId;
|
||||
filters.push(pb.filter("workflowId={:workflowId}", { workflowId: request.workflowId }));
|
||||
}
|
||||
|
||||
return await getPocketBase()
|
||||
.collection(COLLECTION_NAME_WORKFLOW_RUN)
|
||||
.getList<WorkflowRunModel>(page, perPage, {
|
||||
filter: getPocketBase().filter(filter, params),
|
||||
sort: "-created",
|
||||
requestKey: null,
|
||||
expand: request.expand ? "workflowId" : undefined,
|
||||
});
|
||||
const page = request.page || 1;
|
||||
const perPage = request.perPage || 10;
|
||||
return await pb.collection(COLLECTION_NAME_WORKFLOW_RUN).getList<WorkflowRunModel>(page, perPage, {
|
||||
filter: filters.join(" && "),
|
||||
sort: "-created",
|
||||
requestKey: null,
|
||||
expand: request.expand ? "workflowId" : undefined,
|
||||
});
|
||||
};
|
||||
|
||||
export const remove = async (record: MaybeModelRecordWithId<WorkflowRunModel>) => {
|
||||
|
||||
Reference in New Issue
Block a user