59 lines
2.0 KiB
TypeScript
59 lines
2.0 KiB
TypeScript
export type CampaignJobSortColumn =
|
|
| "number"
|
|
| "recipient"
|
|
| "subject"
|
|
| "validation"
|
|
| "queue"
|
|
| "send"
|
|
| "imap"
|
|
| "attempts"
|
|
| "updated";
|
|
|
|
export type CampaignJobsQueryParameters = {
|
|
versionId?: string;
|
|
page?: number;
|
|
pageSize?: number;
|
|
cursor?: string | null;
|
|
sendStatus?: string[];
|
|
validationStatus?: string[];
|
|
imapStatus?: string[];
|
|
query?: string;
|
|
sortBy?: CampaignJobSortColumn;
|
|
sortDirection?: "asc" | "desc";
|
|
filters?: Record<string, string>;
|
|
since?: string | null;
|
|
limit?: number;
|
|
};
|
|
|
|
const FILTER_PARAMETERS: Record<string, string> = {
|
|
recipient: "filter_recipient",
|
|
subject: "filter_subject",
|
|
validation: "filter_validation",
|
|
queue: "filter_queue",
|
|
send: "filter_send",
|
|
imap: "filter_imap",
|
|
attempts: "filter_attempts",
|
|
evidence: "filter_evidence"
|
|
};
|
|
|
|
export function campaignJobsQueryParams(options: CampaignJobsQueryParameters = {}): URLSearchParams {
|
|
const params = new URLSearchParams();
|
|
if (options.versionId) params.set("version_id", options.versionId);
|
|
if (options.page) params.set("page", String(options.page));
|
|
if (options.pageSize) params.set("page_size", String(options.pageSize));
|
|
if (options.cursor) params.set("cursor", options.cursor);
|
|
for (const value of options.sendStatus ?? []) params.append("send_status", value);
|
|
for (const value of options.validationStatus ?? []) params.append("validation_status", value);
|
|
for (const value of options.imapStatus ?? []) params.append("imap_status", value);
|
|
if (options.query?.trim()) params.set("q", options.query.trim());
|
|
if (options.sortBy) params.set("sort_by", options.sortBy);
|
|
if (options.sortDirection) params.set("sort_direction", options.sortDirection);
|
|
for (const [columnId, value] of Object.entries(options.filters ?? {})) {
|
|
const parameter = FILTER_PARAMETERS[columnId];
|
|
if (parameter && value.trim()) params.set(parameter, value);
|
|
}
|
|
if (options.since) params.set("since", options.since);
|
|
if (options.limit) params.set("limit", String(options.limit));
|
|
return params;
|
|
}
|