using Microsoft.EntityFrameworkCore; using OnlyPrompt.Backend.Database.Core; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace OnlyPrompt.Backend.Database.Models { [Index(nameof(Slug), IsUnique = true)] public class PromptModel : EntityBase, IHasSlug { [Required] [ForeignKey(nameof(Creator))] public Guid CreatorId { get; set; } [DeleteBehavior(DeleteBehavior.Cascade)] public virtual UserModel Creator { get; set; } [Required] [ForeignKey(nameof(Category))] public Guid CategoryId { get; set; } [DeleteBehavior(DeleteBehavior.Cascade)] public virtual CategoryModel Category { get; set; } [MaxLength(200)] public required string Title { get; set; } [MaxLength(4000)] public required string Prompt { get; set; } [MaxLength(1000)] public required string Description { get; set; } [MaxLength(ModelConstants.MaxSlugLength)] [Column(TypeName = "citext")] public required string Slug { get; set; } [ForeignKey(nameof(SubscriptionTier))] public Guid? SubscriptionTierId { get; set; } [DeleteBehavior(DeleteBehavior.SetNull)] public virtual SubscriptionTierModel? SubscriptionTier { get; set; } public virtual IList Reviews { get; set; } = new List(); } }