Consolidates V2 codebase into main project directory Updates build script to support simplified entry points Removes redundant files and cleans up project organization Simplifies module imports and entry points for calendar application
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import { IStore } from '../IStore';
|
|
|
|
/**
|
|
* EventStore - IndexedDB ObjectStore definition for calendar events
|
|
*/
|
|
export class EventStore implements IStore {
|
|
static readonly STORE_NAME = 'events';
|
|
readonly storeName = EventStore.STORE_NAME;
|
|
|
|
/**
|
|
* Create the events ObjectStore with indexes
|
|
*/
|
|
create(db: IDBDatabase): void {
|
|
const store = db.createObjectStore(EventStore.STORE_NAME, { keyPath: 'id' });
|
|
|
|
// Index: start (for date range queries)
|
|
store.createIndex('start', 'start', { unique: false });
|
|
|
|
// Index: end (for date range queries)
|
|
store.createIndex('end', 'end', { unique: false });
|
|
|
|
// Index: syncStatus (for filtering by sync state)
|
|
store.createIndex('syncStatus', 'syncStatus', { unique: false });
|
|
|
|
// Index: resourceId (for resource-mode filtering)
|
|
store.createIndex('resourceId', 'resourceId', { unique: false });
|
|
|
|
// Index: customerId (for customer-centric queries)
|
|
store.createIndex('customerId', 'customerId', { unique: false });
|
|
|
|
// Index: bookingId (for event-to-booking lookups)
|
|
store.createIndex('bookingId', 'bookingId', { unique: false });
|
|
|
|
// Compound index: startEnd (for optimized range queries)
|
|
store.createIndex('startEnd', ['start', 'end'], { unique: false });
|
|
}
|
|
}
|