/** * rData Automerge document schemas. * * Lightweight sync for shared analytics dashboard configuration. * The actual analytics data comes from the Umami API; this doc * syncs which apps/metrics space members want to track together. * * DocId format: {space}:data:config */ import type { DocSchema } from '../../shared/local-first/document'; // ── Document types ── export interface TrackedApp { id: string; name: string; url: string; addedBy: string | null; addedAt: number; } export interface DataDoc { meta: { module: string; collection: string; version: number; spaceSlug: string; createdAt: number; }; trackedApps: Record; dashboardConfig: { refreshInterval: number; defaultDateRange: string; }; } // ── Schema registration ── export const dataSchema: DocSchema = { module: 'data', collection: 'config', version: 1, init: (): DataDoc => ({ meta: { module: 'data', collection: 'config', version: 1, spaceSlug: '', createdAt: Date.now(), }, trackedApps: {}, dashboardConfig: { refreshInterval: 30000, defaultDateRange: '7d', }, }), migrate: (doc: any, _fromVersion: number) => { if (!doc.trackedApps) doc.trackedApps = {}; if (!doc.dashboardConfig) doc.dashboardConfig = { refreshInterval: 30000, defaultDateRange: '7d' }; doc.meta.version = 1; return doc; }, }; // ── Helpers ── export function dataDocId(space: string) { return `${space}:data:config` as const; }