diff --git a/meet-ce/backend/src/migrations/index.ts b/meet-ce/backend/src/migrations/index.ts index 089f70e5..f78cb605 100644 --- a/meet-ce/backend/src/migrations/index.ts +++ b/meet-ce/backend/src/migrations/index.ts @@ -2,5 +2,6 @@ export * from './api-key-migrations.js'; export * from './global-config-migrations.js'; export * from './migration-registry.js'; export * from './recording-migrations.js'; +export * from './room-member-migrations.js'; export * from './room-migrations.js'; export * from './user-migrations.js'; diff --git a/meet-ce/backend/src/migrations/migration-registry.ts b/meet-ce/backend/src/migrations/migration-registry.ts index 302aecae..1480ffd1 100644 --- a/meet-ce/backend/src/migrations/migration-registry.ts +++ b/meet-ce/backend/src/migrations/migration-registry.ts @@ -15,11 +15,17 @@ import { MeetRecordingDocument, MeetRecordingModel } from '../models/mongoose-schemas/recording.schema.js'; +import { + meetRoomMemberCollectionName, + MeetRoomMemberDocument, + MeetRoomMemberModel +} from '../models/mongoose-schemas/room-member.schema.js'; import { meetRoomCollectionName, MeetRoomDocument, MeetRoomModel } from '../models/mongoose-schemas/room.schema.js'; import { meetUserCollectionName, MeetUserDocument, MeetUserModel } from '../models/mongoose-schemas/user.schema.js'; import { apiKeyMigrations } from './api-key-migrations.js'; import { globalConfigMigrations } from './global-config-migrations.js'; import { recordingMigrations } from './recording-migrations.js'; +import { roomMemberMigrations } from './room-member-migrations.js'; import { roomMigrations } from './room-migrations.js'; import { userMigrations } from './user-migrations.js'; @@ -35,6 +41,7 @@ const migrationRegistry: [ CollectionMigrationRegistry, CollectionMigrationRegistry, CollectionMigrationRegistry, + CollectionMigrationRegistry, CollectionMigrationRegistry ] = [ // GlobalConfig - no dependencies, can run first @@ -65,8 +72,14 @@ const migrationRegistry: [ currentVersion: INTERNAL_CONFIG.ROOM_SCHEMA_VERSION, migrations: roomMigrations }, + // RoomMember - depends on Room (references roomId) + { + collectionName: meetRoomMemberCollectionName, + model: MeetRoomMemberModel, + currentVersion: INTERNAL_CONFIG.ROOM_MEMBER_SCHEMA_VERSION, + migrations: roomMemberMigrations + }, // Recording - depends on Room (references roomId) - // Should be migrated after rooms { collectionName: meetRecordingCollectionName, model: MeetRecordingModel, diff --git a/meet-ce/backend/src/migrations/room-member-migrations.ts b/meet-ce/backend/src/migrations/room-member-migrations.ts new file mode 100644 index 00000000..9ab859df --- /dev/null +++ b/meet-ce/backend/src/migrations/room-member-migrations.ts @@ -0,0 +1,19 @@ +import { SchemaMigrationMap } from '../models/migration.model.js'; +import { MeetRoomMemberDocument } from '../models/mongoose-schemas/room-member.schema.js'; + +/** + * Schema migrations for MeetRoomMember. + * Key format: schema_{collection}_v{from}_to_v{to} + * + * Example: + * + * const roomMemberMigrationV1ToV2Name = generateSchemaMigrationName(meetRoomMemberCollectionName, 1, 2); + * + * const roomMemberMigrationV1ToV2Transform: SchemaTransform = (roomMember) => { + * roomMember.permissionsUpdatedAt = Date.now(); + * return roomMember; + * }; + */ +export const roomMemberMigrations: SchemaMigrationMap = new Map([ + // [roomMemberMigrationV1ToV2Name, roomMemberMigrationV1ToV2Transform] +]);