backend: integrate schema versioning into create methods across repositories
This commit is contained in:
parent
cdbfd8c968
commit
cae5a58568
@ -1,6 +1,7 @@
|
||||
import { MeetApiKey } from '@openvidu-meet/typings';
|
||||
import { inject, injectable } from 'inversify';
|
||||
import { Require_id } from 'mongoose';
|
||||
import { INTERNAL_CONFIG } from '../config/internal-config.js';
|
||||
import { MeetApiKeyDocument, MeetApiKeyModel } from '../models/mongoose-schemas/api-key.schema.js';
|
||||
import { LoggerService } from '../services/logger.service.js';
|
||||
import { BaseRepository } from './base.repository.js';
|
||||
@ -24,7 +25,11 @@ export class ApiKeyRepository extends BaseRepository<MeetApiKey, MeetApiKeyDocum
|
||||
* Creates a new API key.
|
||||
*/
|
||||
async create(apiKey: MeetApiKey): Promise<MeetApiKey> {
|
||||
return this.createDocument(apiKey);
|
||||
const document: MeetApiKeyDocument = {
|
||||
...apiKey,
|
||||
schemaVersion: INTERNAL_CONFIG.API_KEY_SCHEMA_VERSION
|
||||
};
|
||||
return this.createDocument(document);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { GlobalConfig } from '@openvidu-meet/typings';
|
||||
import { inject, injectable } from 'inversify';
|
||||
import { Require_id } from 'mongoose';
|
||||
import { INTERNAL_CONFIG } from '../config/internal-config.js';
|
||||
import { MeetGlobalConfigDocument, MeetGlobalConfigModel } from '../models/mongoose-schemas/global-config.schema.js';
|
||||
import { LoggerService } from '../services/logger.service.js';
|
||||
import { BaseRepository } from './base.repository.js';
|
||||
@ -33,7 +34,11 @@ export class GlobalConfigRepository extends BaseRepository<GlobalConfig, MeetGlo
|
||||
* @returns The created global configuration
|
||||
*/
|
||||
async create(config: GlobalConfig): Promise<GlobalConfig> {
|
||||
return this.createDocument(config);
|
||||
const document: MeetGlobalConfigDocument = {
|
||||
...config,
|
||||
schemaVersion: INTERNAL_CONFIG.GLOBAL_CONFIG_SCHEMA_VERSION
|
||||
};
|
||||
return this.createDocument(document);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -6,8 +6,9 @@ import {
|
||||
SortOrder
|
||||
} from '@openvidu-meet/typings';
|
||||
import { inject, injectable } from 'inversify';
|
||||
import { FilterQuery, Require_id } from 'mongoose';
|
||||
import { QueryFilter, Require_id } from 'mongoose';
|
||||
import { uid as secureUid } from 'uid/secure';
|
||||
import { INTERNAL_CONFIG } from '../config/internal-config.js';
|
||||
import { MeetRecordingDocument, MeetRecordingModel } from '../models/mongoose-schemas/recording.schema.js';
|
||||
import { LoggerService } from '../services/logger.service.js';
|
||||
import { BaseRepository } from './base.repository.js';
|
||||
@ -35,15 +36,15 @@ export class RecordingRepository extends BaseRepository<MeetRecordingInfo, MeetR
|
||||
* @returns The created recording (without access secrets)
|
||||
*/
|
||||
async create(recording: MeetRecordingInfo): Promise<MeetRecordingInfo> {
|
||||
// Generate access secrets
|
||||
const recordingDoc: Omit<MeetRecordingDocument, 'schemaVersion'> = {
|
||||
const document: MeetRecordingDocument = {
|
||||
...recording,
|
||||
accessSecrets: {
|
||||
public: secureUid(10),
|
||||
private: secureUid(10)
|
||||
}
|
||||
},
|
||||
schemaVersion: INTERNAL_CONFIG.RECORDING_SCHEMA_VERSION
|
||||
};
|
||||
return this.createDocument(recordingDoc);
|
||||
return this.createDocument(document);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -105,7 +106,7 @@ export class RecordingRepository extends BaseRepository<MeetRecordingInfo, MeetR
|
||||
} = options;
|
||||
|
||||
// Build base filter
|
||||
const filter: FilterQuery<MeetRecordingDocument> = {};
|
||||
const filter: QueryFilter<MeetRecordingDocument> = {};
|
||||
|
||||
if (roomIds) {
|
||||
// Filter by multiple room IDs
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { MeetRoomMember, MeetRoomMemberFilters, MeetRoomMemberPermissions, SortOrder } from '@openvidu-meet/typings';
|
||||
import { inject, injectable } from 'inversify';
|
||||
import { FilterQuery, Require_id } from 'mongoose';
|
||||
import { QueryFilter, Require_id } from 'mongoose';
|
||||
import { INTERNAL_CONFIG } from '../config/internal-config.js';
|
||||
import { MeetRoomMemberDocument, MeetRoomMemberModel } from '../models/mongoose-schemas/room-member.schema.js';
|
||||
import { LoggerService } from '../services/logger.service.js';
|
||||
import { BaseRepository } from './base.repository.js';
|
||||
@ -28,7 +29,11 @@ export class RoomMemberRepository extends BaseRepository<MeetRoomMember, MeetRoo
|
||||
* @returns The created room member
|
||||
*/
|
||||
async create(member: MeetRoomMember): Promise<MeetRoomMember> {
|
||||
return this.createDocument(member);
|
||||
const document: MeetRoomMemberDocument = {
|
||||
...member,
|
||||
schemaVersion: INTERNAL_CONFIG.ROOM_MEMBER_SCHEMA_VERSION
|
||||
};
|
||||
return this.createDocument(document);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -128,7 +133,7 @@ export class RoomMemberRepository extends BaseRepository<MeetRoomMember, MeetRoo
|
||||
} = options;
|
||||
|
||||
// Build base filter
|
||||
const filter: FilterQuery<MeetRoomMemberDocument> = { roomId };
|
||||
const filter: QueryFilter<MeetRoomMemberDocument> = { roomId };
|
||||
|
||||
if (name) {
|
||||
filter.name = new RegExp(name, 'i');
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { MeetRoom, MeetRoomField, MeetRoomFilters, MeetRoomStatus, SortOrder } from '@openvidu-meet/typings';
|
||||
import { inject, injectable } from 'inversify';
|
||||
import { FilterQuery, Require_id } from 'mongoose';
|
||||
import { QueryFilter, Require_id } from 'mongoose';
|
||||
import { INTERNAL_CONFIG } from '../config/internal-config.js';
|
||||
import { MeetRoomDocument, MeetRoomModel } from '../models/mongoose-schemas/room.schema.js';
|
||||
import { LoggerService } from '../services/logger.service.js';
|
||||
import { getBasePath } from '../utils/html-dynamic-base-path.utils.js';
|
||||
@ -39,7 +40,11 @@ export class RoomRepository extends BaseRepository<MeetRoom, MeetRoomDocument> {
|
||||
*/
|
||||
async create(room: MeetRoom): Promise<MeetRoom> {
|
||||
const normalizedRoom = this.normalizeRoomForStorage(room);
|
||||
return this.createDocument(normalizedRoom);
|
||||
const document: MeetRoomDocument = {
|
||||
...normalizedRoom,
|
||||
schemaVersion: INTERNAL_CONFIG.ROOM_SCHEMA_VERSION
|
||||
};
|
||||
return this.createDocument(document);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -128,7 +133,7 @@ export class RoomRepository extends BaseRepository<MeetRoom, MeetRoomDocument> {
|
||||
} = options;
|
||||
|
||||
// Build base filter
|
||||
const filter: FilterQuery<MeetRoomDocument> = {};
|
||||
const filter: QueryFilter<MeetRoomDocument> = {};
|
||||
|
||||
// Handle owner and roomIds with $or when both are present
|
||||
if (owner && roomIds) {
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { MeetUser, MeetUserFilters, SortOrder } from '@openvidu-meet/typings';
|
||||
import { inject, injectable } from 'inversify';
|
||||
import { FilterQuery, Require_id } from 'mongoose';
|
||||
import { QueryFilter, Require_id } from 'mongoose';
|
||||
import { INTERNAL_CONFIG } from '../config/internal-config.js';
|
||||
import { MeetUserDocument, MeetUserModel } from '../models/mongoose-schemas/user.schema.js';
|
||||
import { LoggerService } from '../services/logger.service.js';
|
||||
import { BaseRepository } from './base.repository.js';
|
||||
@ -28,7 +29,11 @@ export class UserRepository extends BaseRepository<MeetUser, MeetUserDocument> {
|
||||
* @returns The created user
|
||||
*/
|
||||
async create(user: MeetUser): Promise<MeetUser> {
|
||||
return this.createDocument(user);
|
||||
const document: MeetUserDocument = {
|
||||
...user,
|
||||
schemaVersion: INTERNAL_CONFIG.USER_SCHEMA_VERSION
|
||||
};
|
||||
return this.createDocument(document);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -91,7 +96,7 @@ export class UserRepository extends BaseRepository<MeetUser, MeetUserDocument> {
|
||||
} = options;
|
||||
|
||||
// Build base filter
|
||||
const filter: FilterQuery<MeetUserDocument> = {};
|
||||
const filter: QueryFilter<MeetUserDocument> = {};
|
||||
|
||||
if (userId && name) {
|
||||
// Both defined: OR filter with regex userId match and regex name match
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user