docs
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10
Build a small persistence layer that stores multiple media variants in a single collection using discriminator schemas so child-specific fields are preserved while sharing base fields.
kind discriminator value for each saved document. @testcreatedAt timestamp. @testnull. @testexport type MediaKind = 'article' | 'video';
export interface MediaInput {
title: string;
}
export interface ArticleInput extends MediaInput {
author: string;
wordCount: number;
}
export interface VideoInput extends MediaInput {
durationSeconds: number;
resolution: '720p' | '1080p' | '4k';
}
export type MediaRecord =
| ({ _id: string; kind: 'article'; createdAt: Date } & ArticleInput)
| ({ _id: string; kind: 'video'; createdAt: Date } & VideoInput);
export class MediaService {
constructor(uri?: string);
clear(): Promise<void>;
addArticle(input: ArticleInput): Promise<MediaRecord>;
addVideo(input: VideoInput): Promise<MediaRecord>;
listMedia(): Promise<MediaRecord[]>;
findByTitle(title: string): Promise<MediaRecord | null>;
close(): Promise<void>;
}Integrates MongoDB schemas and discriminator models into NestJS applications.