// Copyright (c) 2023 Timothy Schenk. Subject to the GNU AGPL Version 3 License.

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;

namespace Continuity.AuthServer.DB.Documents;

[Index(nameof(Id), IsUnique = true)]
public class GuildMember
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid Id { get; set; }

    public virtual Guid CharacterId { get; set; }

    [DeleteBehavior(DeleteBehavior.Restrict)]
    [ForeignKey(nameof(CharacterId))]
    [Required]
    public virtual Character Character { get; set; }

    public virtual Guid GuildId { get; set; }

    [DeleteBehavior(DeleteBehavior.Restrict)]
    [ForeignKey(nameof(GuildId))]
    [Required]
    public virtual Guild Guild { get; set; }

    public GuildRank Rank { get; set; }
}