mirror of
https://github.com/fosrl/pangolin.git
synced 2026-02-25 22:36:38 +00:00
♻️ set default time to 7 days ago in API too
This commit is contained in:
@@ -24,6 +24,7 @@ import { fromError } from "zod-validation-error";
|
|||||||
import { QueryAccessAuditLogResponse } from "@server/routers/auditLogs/types";
|
import { QueryAccessAuditLogResponse } from "@server/routers/auditLogs/types";
|
||||||
import response from "@server/lib/response";
|
import response from "@server/lib/response";
|
||||||
import logger from "@server/logger";
|
import logger from "@server/logger";
|
||||||
|
import { getSevenDaysAgo } from "@app/lib/getSevenDaysAgo";
|
||||||
|
|
||||||
export const queryAccessAuditLogsQuery = z.object({
|
export const queryAccessAuditLogsQuery = z.object({
|
||||||
// iso string just validate its a parseable date
|
// iso string just validate its a parseable date
|
||||||
@@ -32,7 +33,8 @@ export const queryAccessAuditLogsQuery = z.object({
|
|||||||
.refine((val) => !isNaN(Date.parse(val)), {
|
.refine((val) => !isNaN(Date.parse(val)), {
|
||||||
error: "timeStart must be a valid ISO date string"
|
error: "timeStart must be a valid ISO date string"
|
||||||
})
|
})
|
||||||
.transform((val) => Math.floor(new Date(val).getTime() / 1000)),
|
.transform((val) => Math.floor(new Date(val).getTime() / 1000))
|
||||||
|
.prefault(() => getSevenDaysAgo().toISOString()),
|
||||||
timeEnd: z
|
timeEnd: z
|
||||||
.string()
|
.string()
|
||||||
.refine((val) => !isNaN(Date.parse(val)), {
|
.refine((val) => !isNaN(Date.parse(val)), {
|
||||||
@@ -44,7 +46,8 @@ export const queryAccessAuditLogsQuery = z.object({
|
|||||||
.openapi({
|
.openapi({
|
||||||
type: "string",
|
type: "string",
|
||||||
format: "date-time",
|
format: "date-time",
|
||||||
description: "End time as ISO date string (defaults to current time)"
|
description:
|
||||||
|
"End time as ISO date string (defaults to current time)"
|
||||||
}),
|
}),
|
||||||
action: z
|
action: z
|
||||||
.union([z.boolean(), z.string()])
|
.union([z.boolean(), z.string()])
|
||||||
@@ -181,9 +184,15 @@ async function queryUniqueFilterAttributes(
|
|||||||
.where(baseConditions);
|
.where(baseConditions);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
actors: uniqueActors.map(row => row.actor).filter((actor): actor is string => actor !== null),
|
actors: uniqueActors
|
||||||
resources: uniqueResources.filter((row): row is { id: number; name: string | null } => row.id !== null),
|
.map((row) => row.actor)
|
||||||
locations: uniqueLocations.map(row => row.locations).filter((location): location is string => location !== null)
|
.filter((actor): actor is string => actor !== null),
|
||||||
|
resources: uniqueResources.filter(
|
||||||
|
(row): row is { id: number; name: string | null } => row.id !== null
|
||||||
|
),
|
||||||
|
locations: uniqueLocations
|
||||||
|
.map((row) => row.locations)
|
||||||
|
.filter((location): location is string => location !== null)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import { fromError } from "zod-validation-error";
|
|||||||
import { QueryActionAuditLogResponse } from "@server/routers/auditLogs/types";
|
import { QueryActionAuditLogResponse } from "@server/routers/auditLogs/types";
|
||||||
import response from "@server/lib/response";
|
import response from "@server/lib/response";
|
||||||
import logger from "@server/logger";
|
import logger from "@server/logger";
|
||||||
|
import { getSevenDaysAgo } from "@app/lib/getSevenDaysAgo";
|
||||||
|
|
||||||
export const queryActionAuditLogsQuery = z.object({
|
export const queryActionAuditLogsQuery = z.object({
|
||||||
// iso string just validate its a parseable date
|
// iso string just validate its a parseable date
|
||||||
@@ -32,7 +33,8 @@ export const queryActionAuditLogsQuery = z.object({
|
|||||||
.refine((val) => !isNaN(Date.parse(val)), {
|
.refine((val) => !isNaN(Date.parse(val)), {
|
||||||
error: "timeStart must be a valid ISO date string"
|
error: "timeStart must be a valid ISO date string"
|
||||||
})
|
})
|
||||||
.transform((val) => Math.floor(new Date(val).getTime() / 1000)),
|
.transform((val) => Math.floor(new Date(val).getTime() / 1000))
|
||||||
|
.prefault(() => getSevenDaysAgo().toISOString()),
|
||||||
timeEnd: z
|
timeEnd: z
|
||||||
.string()
|
.string()
|
||||||
.refine((val) => !isNaN(Date.parse(val)), {
|
.refine((val) => !isNaN(Date.parse(val)), {
|
||||||
@@ -44,7 +46,8 @@ export const queryActionAuditLogsQuery = z.object({
|
|||||||
.openapi({
|
.openapi({
|
||||||
type: "string",
|
type: "string",
|
||||||
format: "date-time",
|
format: "date-time",
|
||||||
description: "End time as ISO date string (defaults to current time)"
|
description:
|
||||||
|
"End time as ISO date string (defaults to current time)"
|
||||||
}),
|
}),
|
||||||
action: z.string().optional(),
|
action: z.string().optional(),
|
||||||
actorType: z.string().optional(),
|
actorType: z.string().optional(),
|
||||||
@@ -68,8 +71,9 @@ export const queryActionAuditLogsParams = z.object({
|
|||||||
orgId: z.string()
|
orgId: z.string()
|
||||||
});
|
});
|
||||||
|
|
||||||
export const queryActionAuditLogsCombined =
|
export const queryActionAuditLogsCombined = queryActionAuditLogsQuery.merge(
|
||||||
queryActionAuditLogsQuery.merge(queryActionAuditLogsParams);
|
queryActionAuditLogsParams
|
||||||
|
);
|
||||||
type Q = z.infer<typeof queryActionAuditLogsCombined>;
|
type Q = z.infer<typeof queryActionAuditLogsCombined>;
|
||||||
|
|
||||||
function getWhere(data: Q) {
|
function getWhere(data: Q) {
|
||||||
@@ -78,7 +82,9 @@ function getWhere(data: Q) {
|
|||||||
lt(actionAuditLog.timestamp, data.timeEnd),
|
lt(actionAuditLog.timestamp, data.timeEnd),
|
||||||
eq(actionAuditLog.orgId, data.orgId),
|
eq(actionAuditLog.orgId, data.orgId),
|
||||||
data.actor ? eq(actionAuditLog.actor, data.actor) : undefined,
|
data.actor ? eq(actionAuditLog.actor, data.actor) : undefined,
|
||||||
data.actorType ? eq(actionAuditLog.actorType, data.actorType) : undefined,
|
data.actorType
|
||||||
|
? eq(actionAuditLog.actorType, data.actorType)
|
||||||
|
: undefined,
|
||||||
data.actorId ? eq(actionAuditLog.actorId, data.actorId) : undefined,
|
data.actorId ? eq(actionAuditLog.actorId, data.actorId) : undefined,
|
||||||
data.action ? eq(actionAuditLog.action, data.action) : undefined
|
data.action ? eq(actionAuditLog.action, data.action) : undefined
|
||||||
);
|
);
|
||||||
@@ -135,8 +141,12 @@ async function queryUniqueFilterAttributes(
|
|||||||
.where(baseConditions);
|
.where(baseConditions);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
actors: uniqueActors.map(row => row.actor).filter((actor): actor is string => actor !== null),
|
actors: uniqueActors
|
||||||
actions: uniqueActions.map(row => row.action).filter((action): action is string => action !== null),
|
.map((row) => row.actor)
|
||||||
|
.filter((actor): actor is string => actor !== null),
|
||||||
|
actions: uniqueActions
|
||||||
|
.map((row) => row.action)
|
||||||
|
.filter((action): action is string => action !== null)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import { fromError } from "zod-validation-error";
|
|||||||
import { QueryRequestAuditLogResponse } from "@server/routers/auditLogs/types";
|
import { QueryRequestAuditLogResponse } from "@server/routers/auditLogs/types";
|
||||||
import response from "@server/lib/response";
|
import response from "@server/lib/response";
|
||||||
import logger from "@server/logger";
|
import logger from "@server/logger";
|
||||||
|
import { getSevenDaysAgo } from "@app/lib/getSevenDaysAgo";
|
||||||
|
|
||||||
export const queryAccessAuditLogsQuery = z.object({
|
export const queryAccessAuditLogsQuery = z.object({
|
||||||
// iso string just validate its a parseable date
|
// iso string just validate its a parseable date
|
||||||
@@ -19,7 +20,8 @@ export const queryAccessAuditLogsQuery = z.object({
|
|||||||
.refine((val) => !isNaN(Date.parse(val)), {
|
.refine((val) => !isNaN(Date.parse(val)), {
|
||||||
error: "timeStart must be a valid ISO date string"
|
error: "timeStart must be a valid ISO date string"
|
||||||
})
|
})
|
||||||
.transform((val) => Math.floor(new Date(val).getTime() / 1000)),
|
.transform((val) => Math.floor(new Date(val).getTime() / 1000))
|
||||||
|
.prefault(() => getSevenDaysAgo().toISOString()),
|
||||||
timeEnd: z
|
timeEnd: z
|
||||||
.string()
|
.string()
|
||||||
.refine((val) => !isNaN(Date.parse(val)), {
|
.refine((val) => !isNaN(Date.parse(val)), {
|
||||||
|
|||||||
Reference in New Issue
Block a user