File size: 1,094 Bytes
68d7816 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import type { SessionSummary } from './sessionIndex';
export const SESSION_INDEX_MANIFEST = 'sessionIndex';
export const SESSION_INDEX_SCHEMA_VERSION = 2;
export const PARENT_INDEX_NAME = 'byParent';
export interface SessionWorkspaceCounts {
readonly active: number;
readonly archived: number;
}
export function sessionCollection(generation: number): string {
return `session:g${generation}`;
}
export function sessionCountersCollection(generation: number): string {
return `sessionCounters:g${generation}`;
}
export function recencyColumn(generation: number): string {
return `g${generation}:updatedAt`;
}
export function withRecencyField(generation: number, summary: SessionSummary): SessionSummary {
return { ...summary, [recencyColumn(generation)]: summary.updatedAt };
}
export function stripRecencyField(generation: number, record: SessionSummary): SessionSummary {
const key = recencyColumn(generation);
if (!(key in record)) return record;
const rest: Record<string, unknown> = { ...record };
delete rest[key];
return rest as unknown as SessionSummary;
}
|