import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import Podcast from 'podcast'; import { ItunesEpisodeTypeEnum } from 'schemas/enum/itunes-episode-type.enum'; import { EpisodeEnclosure } from './episode-enclosure.entity'; import { Document } from 'mongoose'; import { Field, ID, ObjectType } from '@nestjs/graphql'; export type EpisodeDocument = Episode & Document; @Schema() @ObjectType() export class Episode implements Podcast.Item { @Prop() @Field(type => ID) id: string; @Prop() @Field({ nullable: true }) title?: string; @Prop() @Field({ nullable: true }) description?: string; @Prop() @Field() url: string; @Prop() @Field({ nullable: true }) guid?: string; @Prop([String]) @Field(type => [String], {nullable: true}) categories?: string[]; @Prop() @Field({ nullable: true }) author?: string; @Prop() @Field() date: Date; @Prop() @Field({ nullable: true }) lat?: number; @Prop() @Field({ nullable: true }) long?: number; @Prop(EpisodeEnclosure) @Field(type => EpisodeEnclosure, {nullable: true}) enclosure?: EpisodeEnclosure; @Prop() @Field({ nullable: true }) content?: string; @Prop() @Field({ nullable: true }) itunesAuthor?: string; @Prop() @Field({ nullable: true }) itunesExplicit?: boolean; @Prop() @Field({ nullable: true }) itunesSubtitle?: string; @Prop() @Field({ nullable: true }) itunesSummary?: string; @Prop() @Field({ nullable: true }) itunesDuration?: number; @Prop() @Field({ nullable: true }) itunesImage?: string; @Prop() @Field({ nullable: true }) itunesSeason?: number; @Prop() @Field({ nullable: true }) itunesEpisode?: number; @Prop() @Field({ nullable: true }) itunesTitle?: string; @Prop(ItunesEpisodeTypeEnum) @Field(type => ItunesEpisodeTypeEnum, {nullable: true}) itunesEpisodeType?: ItunesEpisodeTypeEnum; } export const EpisodeSchema = SchemaFactory.createForClass(Episode);