chore: import DH V2 D5.6.4 production baseline
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
import type { ListAuditQueryDto } from './dto/list-audit-query.dto';
|
||||
|
||||
export interface AuditFilters {
|
||||
clause: string;
|
||||
parameters: unknown[];
|
||||
}
|
||||
|
||||
export function buildAuditFilters(query: ListAuditQueryDto): AuditFilters {
|
||||
const conditions: string[] = [];
|
||||
const parameters: unknown[] = [];
|
||||
|
||||
const add = (condition: (parameter: string) => string, value: unknown) => {
|
||||
parameters.push(value);
|
||||
conditions.push(condition(`$${parameters.length}`));
|
||||
};
|
||||
|
||||
if (query.actorUserId) {
|
||||
add((parameter) => `event.actor_user_id = ${parameter}`, query.actorUserId);
|
||||
}
|
||||
if (query.actorUsername) {
|
||||
add(
|
||||
(parameter) => `event.actor_username ILIKE ${parameter}`,
|
||||
`%${query.actorUsername}%`,
|
||||
);
|
||||
}
|
||||
if (query.action) {
|
||||
add((parameter) => `event.action = ${parameter}`, query.action);
|
||||
}
|
||||
if (query.source) {
|
||||
add((parameter) => `event.source = ${parameter}`, query.source);
|
||||
}
|
||||
if (query.entityType) {
|
||||
add((parameter) => `event.entity_type = ${parameter}`, query.entityType);
|
||||
}
|
||||
if (query.entityId) {
|
||||
add((parameter) => `event.entity_id = ${parameter}`, query.entityId);
|
||||
}
|
||||
if (query.requestId) {
|
||||
add((parameter) => `event.request_id = ${parameter}`, query.requestId);
|
||||
}
|
||||
if (query.from) {
|
||||
add((parameter) => `event.occurred_at >= ${parameter}`, new Date(query.from));
|
||||
}
|
||||
if (query.to) {
|
||||
add((parameter) => `event.occurred_at <= ${parameter}`, new Date(query.to));
|
||||
}
|
||||
if (query.search) {
|
||||
add(
|
||||
(parameter) => `
|
||||
(
|
||||
event.actor_username ILIKE ${parameter}
|
||||
OR event.action ILIKE ${parameter}
|
||||
OR event.entity_type ILIKE ${parameter}
|
||||
OR event.entity_id ILIKE ${parameter}
|
||||
OR event.request_id ILIKE ${parameter}
|
||||
)
|
||||
`,
|
||||
`%${query.search}%`,
|
||||
);
|
||||
}
|
||||
|
||||
return {
|
||||
clause: conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '',
|
||||
parameters,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user