|
- 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);
|