From d0fb0028227beafee7c70ceea91adecf3bd1d6d6 Mon Sep 17 00:00:00 2001 From: Haylie Tan Date: Thu, 6 Aug 2026 17:36:33 -0700 Subject: [PATCH 1/2] fix: bootstrap legacy collections on fresh databases --- ...0000000000000-bootstrap-legacy-collections.mjs | 15 +++++++++++++++ migrations/create-events.mjs | 2 ++ migrations/create-submissions.mjs | 2 ++ migrations/create-teams.mjs | 2 ++ migrations/create-userToEvents.mjs | 2 ++ migrations/create-users.mjs | 2 ++ 6 files changed, 25 insertions(+) create mode 100644 migrations/00000000000000-bootstrap-legacy-collections.mjs diff --git a/migrations/00000000000000-bootstrap-legacy-collections.mjs b/migrations/00000000000000-bootstrap-legacy-collections.mjs new file mode 100644 index 00000000..c4a4d9b1 --- /dev/null +++ b/migrations/00000000000000-bootstrap-legacy-collections.mjs @@ -0,0 +1,15 @@ +import { up as createEvents } from './create-events.mjs'; +import { up as createSubmissions } from './create-submissions.mjs'; +import { up as createTeams } from './create-teams.mjs'; +import { up as createUserToEvents } from './create-userToEvents.mjs'; +import { up as createUsers } from './create-users.mjs'; + +export async function up(db) { + await createUsers(db); + await createEvents(db); + await createSubmissions(db); + await createTeams(db); + await createUserToEvents(db); +} + +export async function down() {} diff --git a/migrations/create-events.mjs b/migrations/create-events.mjs index b7cc8922..b0dd2ad1 100644 --- a/migrations/create-events.mjs +++ b/migrations/create-events.mjs @@ -1,4 +1,6 @@ export async function up(db) { + if (await db.listCollections({ name: 'events' }).hasNext()) return; + await db.createCollection('events', { validator: { $jsonSchema: { diff --git a/migrations/create-submissions.mjs b/migrations/create-submissions.mjs index aff98a22..57b3dc6c 100644 --- a/migrations/create-submissions.mjs +++ b/migrations/create-submissions.mjs @@ -1,4 +1,6 @@ export async function up(db) { + if (await db.listCollections({ name: 'submissions' }).hasNext()) return; + await db.createCollection('submissions', { validator: { $jsonSchema: { diff --git a/migrations/create-teams.mjs b/migrations/create-teams.mjs index 330eb2ec..475f0fff 100644 --- a/migrations/create-teams.mjs +++ b/migrations/create-teams.mjs @@ -9,6 +9,8 @@ const data = JSON.parse(fs.readFileSync(dataPath, 'utf8')); const tracks = [...new Set(data.tracks)]; export async function up(db) { + if (await db.listCollections({ name: 'teams' }).hasNext()) return; + await db.createCollection('teams', { validator: { $jsonSchema: { diff --git a/migrations/create-userToEvents.mjs b/migrations/create-userToEvents.mjs index 0917ed75..aa4c2fbe 100644 --- a/migrations/create-userToEvents.mjs +++ b/migrations/create-userToEvents.mjs @@ -1,4 +1,6 @@ export async function up(db) { + if (await db.listCollections({ name: 'userToEvents' }).hasNext()) return; + await db.createCollection('userToEvents', { validator: { $jsonSchema: { diff --git a/migrations/create-users.mjs b/migrations/create-users.mjs index fbd842c1..96f8439c 100644 --- a/migrations/create-users.mjs +++ b/migrations/create-users.mjs @@ -9,6 +9,8 @@ const data = JSON.parse(fs.readFileSync(dataPath, 'utf8')); const domains = [...new Set(data.domains)]; export async function up(db) { + if (await db.listCollections({ name: 'users' }).hasNext()) return; + await db.createCollection('users', { validator: { $jsonSchema: { From a68466a1c98692baa0c3ff9bfa6b5b00e6e37a30 Mon Sep 17 00:00:00 2001 From: Haylie Tan Date: Thu, 6 Aug 2026 17:37:21 -0700 Subject: [PATCH 2/2] fix: use valid panel tracks when seeding panels --- scripts/generateData.mjs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/generateData.mjs b/scripts/generateData.mjs index 23ebbe01..37875d04 100644 --- a/scripts/generateData.mjs +++ b/scripts/generateData.mjs @@ -4,6 +4,7 @@ import data from '../app/_data/db_validation_data.json' with { type: 'json' }; const specialties = [...new Set(data.domains)]; const tracks = [...new Set(data.tracks)]; +const panelTracks = [...new Set(data.panelTracks)]; function shuffleSpecialties(specialties) { const shuffledSpecialties = [...specialties]; @@ -204,7 +205,7 @@ function generateData(collectionName, numDocuments, existingData = {}) { }; }); } else if (collectionName === 'panels') { - const trackNames = tracks; + const trackNames = panelTracks; const trackTypes = trackNames.reduce((acc, trackName) => { acc[trackName] = faker.helpers.arrayElement(specialties);