using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using log4net; using Microsoft.EntityFrameworkCore; using Newtonsoft.Json; namespace API.Schema.LibraryConnectors; [PrimaryKey("LibraryConnectorId")] public abstract class LibraryConnector(string libraryConnectorId, LibraryType libraryType, string baseUrl, string auth) { [StringLength(64)] [Required] public string LibraryConnectorId { get; } = libraryConnectorId; [Required] public LibraryType LibraryType { get; init; } = libraryType; [StringLength(256)] [Required] [Url] public string BaseUrl { get; init; } = baseUrl; [StringLength(256)] [Required] public string Auth { get; init; } = auth; [JsonIgnore] [NotMapped] protected ILog Log { get; init; } = LogManager.GetLogger($"{libraryType.ToString()} {baseUrl}"); protected abstract void UpdateLibraryInternal(); internal abstract bool Test(); }