This commit is contained in:
Quaternions 2025-04-11 18:51:31 -07:00
parent 3c0f3a7001
commit dba325af6f
Signed by: Quaternions
GPG Key ID: D0DF5964F79AC131
2 changed files with 32 additions and 32 deletions
web/src/app
mapfixes/[mapfixId]
ts

@ -87,9 +87,9 @@ export default function MapfixInfoPage() {
const comments:Comment[] = auditEvents.map((auditEvent) => { const comments:Comment[] = auditEvents.map((auditEvent) => {
return { return {
date: auditEvent.created_at, date: auditEvent.CreatedAt,
name: auditEvent.user.toString(), name: auditEvent.User.toString(),
comment: decodeAuditEvent(auditEvent).event_data.toString(), comment: decodeAuditEvent(auditEvent).EventData.toString(),
} }
}) })

@ -11,13 +11,13 @@ export enum AuditEventType {
// Discriminated union types for each event // Discriminated union types for each event
export type AuditEventData = export type AuditEventData =
| { event_type: AuditEventType.Action; event_data: AuditEventDataAction } | { EventType: AuditEventType.Action; EventData: AuditEventDataAction }
| { event_type: AuditEventType.Comment; event_data: AuditEventDataComment } | { EventType: AuditEventType.Comment; EventData: AuditEventDataComment }
| { event_type: AuditEventType.ChangeModel; event_data: AuditEventDataChangeModel } | { EventType: AuditEventType.ChangeModel; EventData: AuditEventDataChangeModel }
| { event_type: AuditEventType.ChangeValidatedModel; event_data: AuditEventDataChangeValidatedModel; } | { EventType: AuditEventType.ChangeValidatedModel; EventData: AuditEventDataChangeValidatedModel; }
| { event_type: AuditEventType.ChangeDisplayName; event_data: AuditEventDataChangeName; } | { EventType: AuditEventType.ChangeDisplayName; EventData: AuditEventDataChangeName; }
| { event_type: AuditEventType.ChangeCreator; event_data: AuditEventDataChangeName; } | { EventType: AuditEventType.ChangeCreator; EventData: AuditEventDataChangeName; }
| { event_type: AuditEventType.Error; event_data: AuditEventDataError }; | { EventType: AuditEventType.Error; EventData: AuditEventDataError };
// Concrete data interfaces // Concrete data interfaces
export interface AuditEventDataAction { export interface AuditEventDataAction {
@ -51,51 +51,51 @@ export interface AuditEventDataError {
// Full audit event type (mirroring the Go struct) // Full audit event type (mirroring the Go struct)
export interface AuditEvent { export interface AuditEvent {
id: number; Id: number;
created_at: string; // ISO string, can convert to Date if needed CreatedAt: string; // ISO string, can convert to Date if needed
user: number; User: number;
resource_type: string; // Assuming this is a string enum or similar ResourceType: string; // Assuming this is a string enum or similar
resource_id: number; ResourceId: number;
event_type: AuditEventType; EventType: AuditEventType;
event_data: unknown; // You'll decode this into a specific AuditEventData based on `event_type` EventData: unknown; // You'll decode this into a specific AuditEventData based on `event_type`
} }
// Optional: decode function to parse event_data into strongly-typed structure // Optional: decode function to parse event_data into strongly-typed structure
export function decodeAuditEvent(event: AuditEvent): AuditEventData { export function decodeAuditEvent(event: AuditEvent): AuditEventData {
switch (event.event_type) { switch (event.EventType) {
case AuditEventType.Action: case AuditEventType.Action:
return { return {
event_type: event.event_type, EventType: event.EventType,
event_data: event.event_data as AuditEventDataAction, EventData: event.EventData as AuditEventDataAction,
}; };
case AuditEventType.Comment: case AuditEventType.Comment:
return { return {
event_type: event.event_type, EventType: event.EventType,
event_data: event.event_data as AuditEventDataComment, EventData: event.EventData as AuditEventDataComment,
}; };
case AuditEventType.ChangeModel: case AuditEventType.ChangeModel:
return { return {
event_type: event.event_type, EventType: event.EventType,
event_data: event.event_data as AuditEventDataChangeModel, EventData: event.EventData as AuditEventDataChangeModel,
}; };
case AuditEventType.ChangeValidatedModel: case AuditEventType.ChangeValidatedModel:
return { return {
event_type: event.event_type, EventType: event.EventType,
event_data: EventData:
event.event_data as AuditEventDataChangeValidatedModel, event.EventData as AuditEventDataChangeValidatedModel,
}; };
case AuditEventType.ChangeDisplayName: case AuditEventType.ChangeDisplayName:
case AuditEventType.ChangeCreator: case AuditEventType.ChangeCreator:
return { return {
event_type: event.event_type, EventType: event.EventType,
event_data: event.event_data as AuditEventDataChangeName, EventData: event.EventData as AuditEventDataChangeName,
}; };
case AuditEventType.Error: case AuditEventType.Error:
return { return {
event_type: event.event_type, EventType: event.EventType,
event_data: event.event_data as AuditEventDataError, EventData: event.EventData as AuditEventDataError,
}; };
default: default:
throw new Error(`Unknown event_type: ${event.event_type}`); throw new Error(`Unknown EventType: ${event.EventType}`);
} }
} }