46 lines
1.3 KiB
C#
46 lines
1.3 KiB
C#
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<ReviewModel> Reviews { get; set; } = new List<ReviewModel>();
|
|
}
|
|
}
|