backend: add getRecordingMetadataByPath method to StorageProvider and implement in S3StorageProvider and MeetStorageService
This commit is contained in:
parent
52ef54311a
commit
0fc8c203dd
@ -363,11 +363,13 @@ export class RecordingService {
|
||||
// Retrieve the metadata for each recording
|
||||
Contents.forEach((item) => {
|
||||
if (item?.Key && item.Key.endsWith('.json') && !item.Key.endsWith('secrets.json')) {
|
||||
promises.push(this.s3Service.getObjectAsJson(item.Key) as Promise<MeetRecordingInfo>);
|
||||
promises.push(
|
||||
this.storageService.getRecordingMetadataByPath(item.Key) as Promise<MeetRecordingInfo>
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
let recordings: MeetRecordingInfo[] = await Promise.all(promises);
|
||||
let recordings = await Promise.all(promises);
|
||||
|
||||
recordings = recordings.map((rec) => UtilsHelper.filterObjectFields(rec, fields)) as MeetRecordingInfo[];
|
||||
|
||||
|
||||
@ -437,6 +437,24 @@ export class S3StorageProvider<
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves recording metadata from S3 storage by the specified path.
|
||||
*
|
||||
* @param recordingPath - The S3 path where the recording metadata is stored
|
||||
* @returns A promise that resolves to the recording metadata object
|
||||
* @throws Will throw an error if the S3 object retrieval fails or if the path is invalid
|
||||
*/
|
||||
async getRecordingMetadataByPath(recordingPath: string): Promise<MRec> {
|
||||
try {
|
||||
return await this.s3Service.getObjectAsJson(recordingPath) as MRec;
|
||||
} catch (error) {
|
||||
this.handleError(error, `Error fetching recording metadata for path ${recordingPath}`);
|
||||
throw error;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
async saveRecordingMetadata(recordingInfo: MRec): Promise<MRec> {
|
||||
try {
|
||||
const metadataPath = RecordingHelper.buildMetadataFilePath(recordingInfo.recordingId);
|
||||
|
||||
@ -143,6 +143,14 @@ export interface StorageProvider<
|
||||
*/
|
||||
getRecordingMetadata(recordingId: string): Promise<{ recordingInfo: MRec; metadataFilePath: string }>;
|
||||
|
||||
/**
|
||||
* Retrieves the recording metadata for multiple recording IDs.
|
||||
*
|
||||
* @param recordingPath - The path of the recording file to retrieve metadata for.
|
||||
* @returns A promise that resolves to the recording metadata, or null if not found.
|
||||
*/
|
||||
getRecordingMetadataByPath(recordingPath: string): Promise<MRec | undefined>;
|
||||
|
||||
/**
|
||||
* Deletes multiple recording metadata files by their paths.
|
||||
*
|
||||
|
||||
@ -215,6 +215,13 @@ export class MeetStorageService<
|
||||
return this.storageProvider.saveRecordingMetadata(recordingInfo) as Promise<MRec>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the metadata for a specific recording.
|
||||
*
|
||||
* @param recordingId - The unique identifier of the recording
|
||||
* @returns A promise that resolves to an object containing the recording information and metadata file path
|
||||
* @throws May throw an error if the recording is not found or if there's an issue accessing the storage provider
|
||||
*/
|
||||
async getRecordingMetadata(recordingId: string): Promise<{ recordingInfo: MRec; metadataFilePath: string }> {
|
||||
return this.storageProvider.getRecordingMetadata(recordingId) as Promise<{
|
||||
recordingInfo: MRec;
|
||||
@ -222,6 +229,16 @@ export class MeetStorageService<
|
||||
}>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves metadata for recordings by their file path.
|
||||
*
|
||||
* @param recordingPath - The path of the recording file to retrieve metadata for
|
||||
* @returns A promise that resolves to
|
||||
*/
|
||||
async getRecordingMetadataByPath(recordingPath: string): Promise<MRec | undefined> {
|
||||
return this.storageProvider.getRecordingMetadataByPath(recordingPath) as Promise<MRec>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves recording media as a readable stream from the storage provider.
|
||||
*
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user