using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MongoDB.Bson.Serialization.Attributes; using Wabbajack.BuildServer.Models.Jobs; namespace Wabbajack.BuildServer.Models.JobQueue { public abstract class AJobPayload { public static List KnownSubTypes = new List { typeof(IndexJob), typeof(GetNexusUpdatesJob), typeof(UpdateModLists) }; public static Dictionary TypeToName { get; set; } public static Dictionary NameToType { get; set; } [BsonIgnore] public abstract string Description { get; } public virtual bool UsesNexus { get; } = false; public abstract Task Execute(DBContext db, AppSettings settings); static AJobPayload() { NameToType = KnownSubTypes.ToDictionary(t => t.FullName.Substring(t.Namespace.Length + 1), t => t); TypeToName = NameToType.ToDictionary(k => k.Value, k => k.Key); } } }