podcast-episode.entity.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import {
  2. Entity,
  3. PrimaryGeneratedColumn,
  4. Column,
  5. CreateDateColumn,
  6. UpdateDateColumn,
  7. ManyToOne,
  8. JoinColumn,
  9. } from 'typeorm';
  10. import { User } from '../../user/user.entity';
  11. import { KnowledgeGroup } from '../../knowledge-group/knowledge-group.entity';
  12. import { Tenant } from '../../tenant/tenant.entity';
  13. export enum PodcastStatus {
  14. PENDING = 'pending',
  15. PROCESSING = 'processing',
  16. COMPLETED = 'completed',
  17. FAILED = 'failed',
  18. }
  19. @Entity('podcast_episodes')
  20. export class PodcastEpisode {
  21. @PrimaryGeneratedColumn('uuid')
  22. id: string;
  23. @Column()
  24. title: string;
  25. @Column('text', { nullable: true })
  26. briefing: string; // The instruction/prompt used
  27. @Column({ nullable: true })
  28. audioUrl: string;
  29. @Column('simple-json', { nullable: true })
  30. transcript: any; // The dialogue script
  31. @Column({
  32. type: 'simple-enum',
  33. enum: PodcastStatus,
  34. default: PodcastStatus.PENDING,
  35. })
  36. status: PodcastStatus;
  37. @Column({ name: 'user_id' })
  38. userId: string;
  39. @Column({ name: 'group_id', nullable: true })
  40. groupId: string;
  41. @Column({ name: 'tenant_id', nullable: true, type: 'text' })
  42. tenantId: string;
  43. @CreateDateColumn({ name: 'created_at' })
  44. createdAt: Date;
  45. @UpdateDateColumn({ name: 'updated_at' })
  46. updatedAt: Date;
  47. @ManyToOne(() => User)
  48. @JoinColumn({ name: 'user_id' })
  49. user: User;
  50. @ManyToOne(() => KnowledgeGroup)
  51. @JoinColumn({ name: 'group_id' })
  52. group: KnowledgeGroup;
  53. @ManyToOne(() => Tenant)
  54. @JoinColumn({ name: 'tenant_id' })
  55. tenant: Tenant;
  56. }