Adds audit logging and sync management infrastructure
Introduces comprehensive audit trail system with: - AuditService to track entity changes - SyncManager for background sync of audit entries - New CoreEvents for entity and audit tracking - Simplified sync architecture with event-driven approach Prepares system for enhanced compliance and change tracking
This commit is contained in:
parent
dcd76836bd
commit
9ea98e3a04
18 changed files with 469 additions and 414 deletions
27
src/index.ts
27
src/index.ts
|
|
@ -27,14 +27,17 @@ import { MockEventRepository } from './repositories/MockEventRepository';
|
|||
import { MockBookingRepository } from './repositories/MockBookingRepository';
|
||||
import { MockCustomerRepository } from './repositories/MockCustomerRepository';
|
||||
import { MockResourceRepository } from './repositories/MockResourceRepository';
|
||||
import { MockAuditRepository } from './repositories/MockAuditRepository';
|
||||
import { IApiRepository } from './repositories/IApiRepository';
|
||||
import { IAuditEntry } from './types/AuditTypes';
|
||||
import { ApiEventRepository } from './repositories/ApiEventRepository';
|
||||
import { ApiBookingRepository } from './repositories/ApiBookingRepository';
|
||||
import { ApiCustomerRepository } from './repositories/ApiCustomerRepository';
|
||||
import { ApiResourceRepository } from './repositories/ApiResourceRepository';
|
||||
import { IndexedDBContext } from './storage/IndexedDBContext';
|
||||
import { OperationQueue } from './storage/OperationQueue';
|
||||
import { IStore } from './storage/IStore';
|
||||
import { AuditStore } from './storage/audit/AuditStore';
|
||||
import { AuditService } from './storage/audit/AuditService';
|
||||
import { BookingStore } from './storage/bookings/BookingStore';
|
||||
import { CustomerStore } from './storage/customers/CustomerStore';
|
||||
import { ResourceStore } from './storage/resources/ResourceStore';
|
||||
|
|
@ -121,11 +124,10 @@ async function initializeCalendar(): Promise<void> {
|
|||
builder.registerType(CustomerStore).as<IStore>();
|
||||
builder.registerType(ResourceStore).as<IStore>();
|
||||
builder.registerType(EventStore).as<IStore>();
|
||||
|
||||
builder.registerType(AuditStore).as<IStore>();
|
||||
|
||||
// Register storage and repository services
|
||||
builder.registerType(IndexedDBContext).as<IndexedDBContext>();
|
||||
builder.registerType(OperationQueue).as<OperationQueue>();
|
||||
|
||||
// Register Mock repositories (development/testing - load from JSON files)
|
||||
// Each entity type has its own Mock repository implementing IApiRepository<T>
|
||||
|
|
@ -133,6 +135,7 @@ async function initializeCalendar(): Promise<void> {
|
|||
builder.registerType(MockBookingRepository).as<IApiRepository<IBooking>>();
|
||||
builder.registerType(MockCustomerRepository).as<IApiRepository<ICustomer>>();
|
||||
builder.registerType(MockResourceRepository).as<IApiRepository<IResource>>();
|
||||
builder.registerType(MockAuditRepository).as<IApiRepository<IAuditEntry>>();
|
||||
|
||||
builder.registerType(DateColumnDataSource).as<IColumnDataSource>();
|
||||
// Register entity services (sync status management)
|
||||
|
|
@ -141,6 +144,7 @@ async function initializeCalendar(): Promise<void> {
|
|||
builder.registerType(BookingService).as<IEntityService<IBooking>>();
|
||||
builder.registerType(CustomerService).as<IEntityService<ICustomer>>();
|
||||
builder.registerType(ResourceService).as<IEntityService<IResource>>();
|
||||
builder.registerType(AuditService).as<AuditService>();
|
||||
|
||||
// Register workers
|
||||
builder.registerType(SyncManager).as<SyncManager>();
|
||||
|
|
@ -211,12 +215,11 @@ async function initializeCalendar(): Promise<void> {
|
|||
await calendarManager.initialize?.();
|
||||
await resizeHandleManager.initialize?.();
|
||||
|
||||
// Resolve SyncManager (starts automatically in constructor)
|
||||
// Resolve SyncManager (starts automatically in constructor)
|
||||
// Resolve SyncManager (starts automatically in constructor)
|
||||
// Resolve SyncManager (starts automatically in constructor)
|
||||
// Resolve SyncManager (starts automatically in constructor)
|
||||
//const syncManager = app.resolveType<SyncManager>();
|
||||
// Resolve AuditService (starts listening for entity events)
|
||||
const auditService = app.resolveType<AuditService>();
|
||||
|
||||
// Resolve SyncManager (starts background sync automatically)
|
||||
const syncManager = app.resolveType<SyncManager>();
|
||||
|
||||
// Handle deep linking after managers are initialized
|
||||
await handleDeepLinking(eventManager, urlManager);
|
||||
|
|
@ -229,7 +232,8 @@ async function initializeCalendar(): Promise<void> {
|
|||
calendarManager: typeof calendarManager;
|
||||
eventManager: typeof eventManager;
|
||||
workweekPresetsManager: typeof workweekPresetsManager;
|
||||
//syncManager: typeof syncManager;
|
||||
auditService: typeof auditService;
|
||||
syncManager: typeof syncManager;
|
||||
};
|
||||
}).calendarDebug = {
|
||||
eventBus,
|
||||
|
|
@ -237,7 +241,8 @@ async function initializeCalendar(): Promise<void> {
|
|||
calendarManager,
|
||||
eventManager,
|
||||
workweekPresetsManager,
|
||||
//syncManager,
|
||||
auditService,
|
||||
syncManager,
|
||||
};
|
||||
|
||||
} catch (error) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue