hzgjuigik
This commit is contained in:
2026-01-27 21:06:48 +01:00
parent 18c11d27bc
commit 6da8ce1cbd
51 changed files with 6208 additions and 974 deletions

View File

@@ -200,6 +200,58 @@ async function setupCollections() {
db.createStringAttribute(DB_ID, 'user_preferences', 'userId', 64, true));
await ensureAttribute('user_preferences', 'preferencesJson', () =>
db.createStringAttribute(DB_ID, 'user_preferences', 'preferencesJson', 16384, false));
// ==================== Onboarding State ====================
await ensureCollection('onboarding_state', 'Onboarding State', PERM_AUTHENTICATED);
await ensureAttribute('onboarding_state', 'userId', () =>
db.createStringAttribute(DB_ID, 'onboarding_state', 'userId', 64, true));
await ensureAttribute('onboarding_state', 'onboarding_step', () =>
db.createStringAttribute(DB_ID, 'onboarding_state', 'onboarding_step', 32, true));
await ensureAttribute('onboarding_state', 'completed_steps_json', () =>
db.createStringAttribute(DB_ID, 'onboarding_state', 'completed_steps_json', 1024, false));
await ensureAttribute('onboarding_state', 'first_value_seen_at', () =>
db.createDatetimeAttribute(DB_ID, 'onboarding_state', 'first_value_seen_at', false));
await ensureAttribute('onboarding_state', 'skipped_at', () =>
db.createDatetimeAttribute(DB_ID, 'onboarding_state', 'skipped_at', false));
await ensureAttribute('onboarding_state', 'last_updated', () =>
db.createDatetimeAttribute(DB_ID, 'onboarding_state', 'last_updated', false));
// ==================== Email Usage ====================
await ensureCollection('email_usage', 'Email Usage', PERM_AUTHENTICATED);
await ensureAttribute('email_usage', 'userId', () =>
db.createStringAttribute(DB_ID, 'email_usage', 'userId', 64, true));
await ensureAttribute('email_usage', 'month', () =>
db.createStringAttribute(DB_ID, 'email_usage', 'month', 16, true)); // "2026-01"
await ensureAttribute('email_usage', 'emailsProcessed', () =>
db.createIntegerAttribute(DB_ID, 'email_usage', 'emailsProcessed', true, 0));
await ensureAttribute('email_usage', 'lastReset', () =>
db.createDatetimeAttribute(DB_ID, 'email_usage', 'lastReset', false));
// ==================== Referrals ====================
await ensureCollection('referrals', 'Referrals', PERM_AUTHENTICATED);
await ensureAttribute('referrals', 'userId', () =>
db.createStringAttribute(DB_ID, 'referrals', 'userId', 64, true));
await ensureAttribute('referrals', 'referralCode', () =>
db.createStringAttribute(DB_ID, 'referrals', 'referralCode', 32, true));
await ensureAttribute('referrals', 'referredBy', () =>
db.createStringAttribute(DB_ID, 'referrals', 'referredBy', 64, false));
await ensureAttribute('referrals', 'referralCount', () =>
db.createIntegerAttribute(DB_ID, 'referrals', 'referralCount', true, 0));
await ensureAttribute('referrals', 'createdAt', () =>
db.createDatetimeAttribute(DB_ID, 'referrals', 'createdAt', false));
// ==================== Analytics Events ====================
await ensureCollection('analytics_events', 'Analytics Events', PERM_PUBLIC_READ);
await ensureAttribute('analytics_events', 'userId', () =>
db.createStringAttribute(DB_ID, 'analytics_events', 'userId', 64, false));
await ensureAttribute('analytics_events', 'eventType', () =>
db.createStringAttribute(DB_ID, 'analytics_events', 'eventType', 64, true));
await ensureAttribute('analytics_events', 'metadataJson', () =>
db.createStringAttribute(DB_ID, 'analytics_events', 'metadataJson', 4096, false));
await ensureAttribute('analytics_events', 'timestamp', () =>
db.createDatetimeAttribute(DB_ID, 'analytics_events', 'timestamp', false));
await ensureAttribute('analytics_events', 'sessionId', () =>
db.createStringAttribute(DB_ID, 'analytics_events', 'sessionId', 64, false));
}
async function main() {