diff --git a/backend/src/services/storage/providers/s3-storage.provider.ts b/backend/src/services/storage/providers/s3-storage.provider.ts index 85ff505..28d474a 100644 --- a/backend/src/services/storage/providers/s3-storage.provider.ts +++ b/backend/src/services/storage/providers/s3-storage.provider.ts @@ -274,7 +274,7 @@ export class S3StorageProvider { + try { + const filePath = `${INTERNAL_CONFIG.S3_RECORDINGS_PREFIX}/.room_metadata/${roomId}/room_metadata.json`; + const fileExists = await this.s3Service.exists(filePath); + + if (!fileExists) { + this.logger.warn(`Room metadata not found for room ${roomId} in recordings bucket`); + return; + } + + const room = await this.getMeetRoom(roomId); + + if (room) { + const roomMetadata = { + moderatorRoomUrl: room.moderatorRoomUrl, + publisherRoomUrl: room.publisherRoomUrl, + preferences: { + recordingPreferences: room.preferences?.recordingPreferences + } + }; + await this.s3Service.saveObject(filePath, roomMetadata); + this.logger.debug(`Room metadata updated for room ${roomId} in recordings bucket`); + return; + } + + this.logger.error(`Error updating room metadata for room ${roomId} in recordings bucket`); + } catch (error) { + this.logger.error(`Error updating room metadata for room ${roomId} in recordings bucket: ${error}`); + } + } + /** * Retrieves an object of type U from Redis by the given key. * Returns null if the key is not found or an error occurs. diff --git a/backend/src/services/storage/storage.interface.ts b/backend/src/services/storage/storage.interface.ts index 044ba0e..146fd69 100644 --- a/backend/src/services/storage/storage.interface.ts +++ b/backend/src/services/storage/storage.interface.ts @@ -98,6 +98,15 @@ export interface StorageProvider; + /** + * Updates the archived metadata for a specific room. + * + * This is necessary for keeping the metadata of a room up to date. + * + * @param roomId: The room ID to update. + */ + updateArchivedRoomMetadata(roomId: string): Promise; + //TODO: // deleteArchivedRoomMetadata(roomId: string): Promise; diff --git a/backend/src/services/storage/storage.service.ts b/backend/src/services/storage/storage.service.ts index 5151dcf..98639ab 100644 --- a/backend/src/services/storage/storage.service.ts +++ b/backend/src/services/storage/storage.service.ts @@ -131,6 +131,10 @@ export class MeetStorageService { + return this.storageProvider.updateArchivedRoomMetadata(roomId); + } + /** * Returns the default global preferences. * @returns {G}