using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text.Json.Serialization;
using Microsoft.EntityFrameworkCore;
using NodaTime;

namespace DysonNetwork.Shared.Models;

public class SnFediverseRelationship : ModelBase
{
    public Guid Id { get; set; } = Guid.NewGuid();
    
    public Guid ActorId { get; set; }
    public SnFediverseActor Actor { get; set; } = null!;
    public Guid TargetActorId { get; set; }
    public SnFediverseActor TargetActor { get; set; } = null!;
    
    public RelationshipState State { get; set; } = RelationshipState.Pending;

    public bool IsMuting { get; set; } = false;
    public bool IsBlocking { get; set; } = false;
    
    public Instant? FollowedAt { get; set; }
    public Instant? FollowedBackAt { get; set; }
    
    [MaxLength(4096)] public string? RejectReason { get; set; }
}

public enum RelationshipState
{
    Pending,
    Accepted,
    Rejected
}
