backend: enhance recording and room filters with status and sorting options
This commit is contained in:
parent
113dbe4f88
commit
1c955c60d0
@ -1,4 +1,4 @@
|
||||
import { MeetRecordingFilters } from '@openvidu-meet/typings';
|
||||
import { MeetRecordingFilters, MeetRecordingStatus } from '@openvidu-meet/typings';
|
||||
import { z } from 'zod';
|
||||
import { nonEmptySanitizedRoomId } from './room.schema.js';
|
||||
|
||||
@ -54,6 +54,10 @@ export const StartRecordingReqSchema = z.object({
|
||||
});
|
||||
|
||||
export const RecordingFiltersSchema: z.ZodType<MeetRecordingFilters> = z.object({
|
||||
roomId: nonEmptySanitizedRoomId('roomId').optional(),
|
||||
roomName: z.string().optional(),
|
||||
status: z.nativeEnum(MeetRecordingStatus).optional(),
|
||||
fields: z.string().optional(),
|
||||
maxItems: z.coerce
|
||||
.number()
|
||||
.positive('maxItems must be a positive number')
|
||||
@ -64,11 +68,9 @@ export const RecordingFiltersSchema: z.ZodType<MeetRecordingFilters> = z.object(
|
||||
return intVal > 100 ? 100 : intVal;
|
||||
})
|
||||
.default(10),
|
||||
// status: z.string().optional(),
|
||||
roomId: nonEmptySanitizedRoomId('roomId').optional(),
|
||||
roomName: z.string().optional(),
|
||||
nextPageToken: z.string().optional(),
|
||||
fields: z.string().optional()
|
||||
sortField: z.enum(['startDate', 'roomName', 'duration', 'size']).optional().default('startDate'),
|
||||
sortOrder: z.enum(['asc', 'desc']).optional().default('desc')
|
||||
});
|
||||
|
||||
export const BulkDeleteRecordingsReqSchema = z.object({
|
||||
|
||||
@ -178,6 +178,9 @@ export const RoomOptionsSchema: z.ZodType<MeetRoomOptions> = z.object({
|
||||
});
|
||||
|
||||
export const RoomFiltersSchema: z.ZodType<MeetRoomFilters> = z.object({
|
||||
roomName: z.string().optional(),
|
||||
status: z.nativeEnum(MeetRoomStatus).optional(),
|
||||
fields: z.string().optional(),
|
||||
maxItems: z.coerce
|
||||
.number()
|
||||
.positive('maxItems must be a positive number')
|
||||
@ -189,8 +192,8 @@ export const RoomFiltersSchema: z.ZodType<MeetRoomFilters> = z.object({
|
||||
})
|
||||
.default(10),
|
||||
nextPageToken: z.string().optional(),
|
||||
roomName: z.string().optional(),
|
||||
fields: z.string().optional()
|
||||
sortField: z.enum(['creationDate', 'roomName', 'autoDeletionDate']).optional().default('creationDate'),
|
||||
sortOrder: z.enum(['asc', 'desc']).optional().default('desc')
|
||||
});
|
||||
|
||||
export const DeleteRoomReqSchema = z.object({
|
||||
|
||||
@ -5,6 +5,7 @@ export * from './event.model.js';
|
||||
|
||||
export * from './permissions/livekit-permissions.js';
|
||||
export * from './permissions/meet-permissions.js';
|
||||
export * from './sort-pagination.js';
|
||||
export * from './room-member.js';
|
||||
export * from './user.js';
|
||||
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
import { SortAndPagination } from './sort-pagination.js';
|
||||
|
||||
export enum MeetRecordingStatus {
|
||||
STARTING = 'starting',
|
||||
ACTIVE = 'active',
|
||||
@ -31,10 +33,9 @@ export interface MeetRecordingInfo {
|
||||
details?: string;
|
||||
}
|
||||
|
||||
export type MeetRecordingFilters = {
|
||||
maxItems?: number;
|
||||
nextPageToken?: string;
|
||||
export interface MeetRecordingFilters extends SortAndPagination {
|
||||
roomId?: string;
|
||||
roomName?: string;
|
||||
status?: MeetRecordingStatus;
|
||||
fields?: string;
|
||||
};
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import { MeetRoomConfig } from './room-config.js';
|
||||
import { MeetRoomMemberPermissions, MeetRoomMemberRole } from './room-member.js';
|
||||
import { SortAndPagination } from './sort-pagination.js';
|
||||
|
||||
/**
|
||||
* Options for creating a room.
|
||||
@ -60,12 +61,11 @@ export interface MeetRoomMemberRoleAndPermissions {
|
||||
permissions: MeetRoomMemberPermissions;
|
||||
}
|
||||
|
||||
export type MeetRoomFilters = {
|
||||
maxItems?: number;
|
||||
nextPageToken?: string;
|
||||
export interface MeetRoomFilters extends SortAndPagination {
|
||||
roomName?: string;
|
||||
status?: MeetRoomStatus;
|
||||
fields?: string;
|
||||
};
|
||||
}
|
||||
|
||||
export enum MeetRoomDeletionSuccessCode {
|
||||
ROOM_DELETED = 'room_deleted',
|
||||
|
||||
6
meet-ce/typings/src/sort-pagination.ts
Normal file
6
meet-ce/typings/src/sort-pagination.ts
Normal file
@ -0,0 +1,6 @@
|
||||
export interface SortAndPagination {
|
||||
maxItems?: number;
|
||||
nextPageToken?: string;
|
||||
sortField?: string;
|
||||
sortOrder?: 'asc' | 'desc';
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user