using System.ComponentModel.DataAnnotations; using LANCommander.SDK.Enums; using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json.Serialization; using LANCommander.Server.Settings.Enums; namespace LANCommander.Server.Data.Models { public class Server : BaseModel { public string Name { get; set; } = ""; public ServerEngine Engine { get; set; } = ServerEngine.Local; public string Path { get; set; } = ""; public string Arguments { get; set; } = ""; public string WorkingDirectory { get; set; } = ""; public string OnStartScriptPath { get; set; } = ""; public string OnStopScriptPath { get; set; } = ""; public Guid? DockerHostId { get; set; } public Guid? RemoteHostId { get; set; } public Guid? RemoteServerId { get; set; } [MaxLength(64)] public string ContainerId { get; set; } = ""; public string Host { get; set; } = ""; public int Port { get; set; } = 0; public bool UseShellExecute { get; set; } public ProcessTerminationMethod ProcessTerminationMethod { get; set; } public bool Autostart { get; set; } public ServerAutostartMethod AutostartMethod { get; set; } public int AutostartDelay { get; set; } public Guid? GameId { get; set; } [JsonIgnore] [ForeignKey(nameof(GameId))] [InverseProperty("Servers")] public Game? Game { get; set; } public ICollection? ServerConsoles { get; set; } public ICollection? HttpPaths { get; set; } public ICollection