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) => {
return {
date: auditEvent.created_at,
name: auditEvent.user.toString(),
comment: decodeAuditEvent(auditEvent).event_data.toString(),
date: auditEvent.CreatedAt,
name: auditEvent.User.toString(),
comment: decodeAuditEvent(auditEvent).EventData.toString(),
}
})

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