mirror of
https://github.com/C9Glax/tranga.git
synced 2025-10-17 10:50:45 +02:00
Actions use enum
This commit is contained in:
@@ -1,16 +1,17 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using API.Schema.ActionsContext.Actions;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace API.Schema.ActionsContext;
|
||||
|
||||
[PrimaryKey("Key")]
|
||||
public abstract class ActionRecord(string action, DateTime performedAt) : Identifiable
|
||||
public abstract class ActionRecord(ActionsEnum action, DateTime performedAt) : Identifiable
|
||||
{
|
||||
/// <summary>
|
||||
/// Constant string that describes the performed Action
|
||||
/// </summary>
|
||||
[StringLength(128)]
|
||||
public string Action { get; init; } = action;
|
||||
public ActionsEnum Action { get; init; } = action;
|
||||
|
||||
/// <summary>
|
||||
/// UTC Time when Action was performed
|
||||
|
12
API/Schema/ActionsContext/Actions/ActionsEnum.cs
Normal file
12
API/Schema/ActionsContext/Actions/ActionsEnum.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
namespace API.Schema.ActionsContext.Actions;
|
||||
|
||||
public enum ActionsEnum
|
||||
{
|
||||
Startup = 0,
|
||||
ChapterDownloaded = 1,
|
||||
ChaptersRetrieved = 2,
|
||||
CoverDownloaded = 3,
|
||||
DataMoved = 4,
|
||||
LibraryMoved = 5,
|
||||
MetadataUpdated = 6
|
||||
}
|
@@ -3,15 +3,13 @@ using API.Schema.MangaContext;
|
||||
|
||||
namespace API.Schema.ActionsContext.Actions;
|
||||
|
||||
public sealed class ChapterDownloadedActionRecord(string action, DateTime performedAt, string chapterId) : ActionRecord(action, performedAt)
|
||||
public sealed class ChapterDownloadedActionRecord(ActionsEnum action, DateTime performedAt, string chapterId) : ActionRecord(action, performedAt)
|
||||
{
|
||||
public ChapterDownloadedActionRecord(Chapter chapter) : this(ChapterDownloadedAction, DateTime.UtcNow, chapter.Key) { }
|
||||
public ChapterDownloadedActionRecord(Chapter chapter) : this(ActionsEnum.ChapterDownloaded, DateTime.UtcNow, chapter.Key) { }
|
||||
|
||||
/// <summary>
|
||||
/// Chapter that was downloaded
|
||||
/// </summary>
|
||||
[StringLength(64)]
|
||||
public string ChapterId { get; init; } = chapterId;
|
||||
|
||||
public const string ChapterDownloadedAction = "Chapter.Downloaded";
|
||||
}
|
@@ -3,10 +3,10 @@ using API.Schema.MangaContext;
|
||||
|
||||
namespace API.Schema.ActionsContext.Actions;
|
||||
|
||||
public sealed class ChaptersRetrievedActionRecord(string action, DateTime performedAt, string mangaId)
|
||||
public sealed class ChaptersRetrievedActionRecord(ActionsEnum action, DateTime performedAt, string mangaId)
|
||||
: ActionWithMangaRecord(action, performedAt, mangaId)
|
||||
{
|
||||
public ChaptersRetrievedActionRecord(Manga manga) : this(ChaptersRetrievedAction, DateTime.UtcNow, manga.Key) { }
|
||||
public ChaptersRetrievedActionRecord(Manga manga) : this(ActionsEnum.ChaptersRetrieved, DateTime.UtcNow, manga.Key) { }
|
||||
|
||||
public const string ChaptersRetrievedAction = "Manga.ChaptersRetrieved";
|
||||
}
|
@@ -4,16 +4,14 @@ using API.Schema.MangaContext;
|
||||
|
||||
namespace API.Schema.ActionsContext.Actions;
|
||||
|
||||
public sealed class CoverDownloadedActionRecord(string action, DateTime performedAt, string mangaId, string filename)
|
||||
public sealed class CoverDownloadedActionRecord(ActionsEnum action, DateTime performedAt, string mangaId, string filename)
|
||||
: ActionWithMangaRecord(action, performedAt, mangaId)
|
||||
{
|
||||
public CoverDownloadedActionRecord(Manga manga, string filename) : this(CoverDownloadedAction, DateTime.UtcNow, manga.Key, filename) { }
|
||||
public CoverDownloadedActionRecord(Manga manga, string filename) : this(ActionsEnum.CoverDownloaded, DateTime.UtcNow, manga.Key, filename) { }
|
||||
|
||||
/// <summary>
|
||||
/// Filename on disk
|
||||
/// </summary>
|
||||
[StringLength(1024)]
|
||||
public string Filename { get; init; } = filename;
|
||||
|
||||
public const string CoverDownloadedAction = "Manga.CoverDownloaded";
|
||||
}
|
@@ -2,9 +2,9 @@ using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace API.Schema.ActionsContext.Actions;
|
||||
|
||||
public sealed class DataMovedActionRecord(string action, DateTime performedAt, string from, string to) : ActionRecord(action, performedAt)
|
||||
public sealed class DataMovedActionRecord(ActionsEnum action, DateTime performedAt, string from, string to) : ActionRecord(action, performedAt)
|
||||
{
|
||||
public DataMovedActionRecord(string from, string to) : this(DataMovedAction, DateTime.UtcNow, from, to) { }
|
||||
public DataMovedActionRecord(string from, string to) : this(ActionsEnum.DataMoved, DateTime.UtcNow, from, to) { }
|
||||
|
||||
/// <summary>
|
||||
/// From path
|
||||
@@ -17,6 +17,4 @@ public sealed class DataMovedActionRecord(string action, DateTime performedAt, s
|
||||
/// </summary>
|
||||
[StringLength(2048)]
|
||||
public string To { get; init; } = to;
|
||||
|
||||
public const string DataMovedAction = "Tranga.DataMoved";
|
||||
}
|
@@ -3,9 +3,9 @@ using API.Schema.MangaContext;
|
||||
|
||||
namespace API.Schema.ActionsContext.Actions.Generic;
|
||||
|
||||
public abstract class ActionWithMangaRecord(string action, DateTime performedAt, string mangaId) : ActionRecord(action, performedAt)
|
||||
public abstract class ActionWithMangaRecord(ActionsEnum action, DateTime performedAt, string mangaId) : ActionRecord(action, performedAt)
|
||||
{
|
||||
protected ActionWithMangaRecord(string action, DateTime performedAt, Manga manga) : this(action, performedAt, manga.Key) { }
|
||||
protected ActionWithMangaRecord(ActionsEnum action, DateTime performedAt, Manga manga) : this(action, performedAt, manga.Key) { }
|
||||
|
||||
/// <summary>
|
||||
/// <see cref="Schema.MangaContext.Manga"/> for which the cover was downloaded
|
||||
|
@@ -4,15 +4,13 @@ using API.Schema.MangaContext;
|
||||
|
||||
namespace API.Schema.ActionsContext.Actions;
|
||||
|
||||
public sealed class LibraryMovedActionRecord(string action, DateTime performedAt, string mangaId, string fileLibraryId) : ActionWithMangaRecord(action, performedAt, mangaId)
|
||||
public sealed class LibraryMovedActionRecord(ActionsEnum action, DateTime performedAt, string mangaId, string fileLibraryId) : ActionWithMangaRecord(action, performedAt, mangaId)
|
||||
{
|
||||
public LibraryMovedActionRecord(Manga manga, FileLibrary library) : this(LibraryMovedAction, DateTime.UtcNow, manga.Key, library.Key) { }
|
||||
public LibraryMovedActionRecord(Manga manga, FileLibrary library) : this(ActionsEnum.LibraryMoved, DateTime.UtcNow, manga.Key, library.Key) { }
|
||||
|
||||
/// <summary>
|
||||
/// <see cref="Schema.MangaContext.FileLibrary"/> for which the cover was downloaded
|
||||
/// </summary>
|
||||
[StringLength(64)]
|
||||
public string FileLibraryId { get; init; } = fileLibraryId;
|
||||
|
||||
public const string LibraryMovedAction = "Manga.LibraryMoved";
|
||||
}
|
@@ -5,16 +5,14 @@ using API.Schema.MangaContext.MetadataFetchers;
|
||||
|
||||
namespace API.Schema.ActionsContext.Actions;
|
||||
|
||||
public sealed class MetadataUpdatedActionRecord(string action, DateTime performedAt, string mangaId, string metadataFetcher)
|
||||
public sealed class MetadataUpdatedActionRecord(ActionsEnum action, DateTime performedAt, string mangaId, string metadataFetcher)
|
||||
: ActionWithMangaRecord(action, performedAt, mangaId)
|
||||
{
|
||||
public MetadataUpdatedActionRecord(Manga manga, MetadataFetcher fetcher) : this(MetadataUpdatedAction, DateTime.UtcNow, manga.Key, fetcher.Name) { }
|
||||
public MetadataUpdatedActionRecord(Manga manga, MetadataFetcher fetcher) : this(ActionsEnum.MetadataUpdated, DateTime.UtcNow, manga.Key, fetcher.Name) { }
|
||||
|
||||
/// <summary>
|
||||
/// Filename on disk
|
||||
/// </summary>
|
||||
[StringLength(1024)]
|
||||
public string MetadataFetcher { get; init; } = metadataFetcher;
|
||||
|
||||
public const string MetadataUpdatedAction = "Manga.MetadataUpdated";
|
||||
}
|
@@ -1,8 +1,6 @@
|
||||
namespace API.Schema.ActionsContext.Actions;
|
||||
|
||||
public sealed class StartupActionRecord(string action, DateTime performedAt) : ActionRecord(action, performedAt)
|
||||
public sealed class StartupActionRecord(ActionsEnum action, DateTime performedAt) : ActionRecord(action, performedAt)
|
||||
{
|
||||
public StartupActionRecord() : this(StartupAction, DateTime.UtcNow) { }
|
||||
|
||||
public const string StartupAction = "Tranga.Started";
|
||||
public StartupActionRecord() : this(ActionsEnum.Startup, DateTime.UtcNow) { }
|
||||
}
|
@@ -11,12 +11,12 @@ public class ActionsContext(DbContextOptions<ActionsContext> options) : TrangaBa
|
||||
{
|
||||
modelBuilder.Entity<ActionRecord>()
|
||||
.HasDiscriminator(a => a.Action)
|
||||
.HasValue<ChapterDownloadedActionRecord>(ChapterDownloadedActionRecord.ChapterDownloadedAction)
|
||||
.HasValue<CoverDownloadedActionRecord>(CoverDownloadedActionRecord.CoverDownloadedAction)
|
||||
.HasValue<ChaptersRetrievedActionRecord>(ChaptersRetrievedActionRecord.ChaptersRetrievedAction)
|
||||
.HasValue<MetadataUpdatedActionRecord>(MetadataUpdatedActionRecord.MetadataUpdatedAction)
|
||||
.HasValue<DataMovedActionRecord>(DataMovedActionRecord.DataMovedAction)
|
||||
.HasValue<LibraryMovedActionRecord>(LibraryMovedActionRecord.LibraryMovedAction)
|
||||
.HasValue<StartupActionRecord>(StartupActionRecord.StartupAction);
|
||||
.HasValue<ChapterDownloadedActionRecord>(ActionsEnum.ChapterDownloaded)
|
||||
.HasValue<CoverDownloadedActionRecord>(ActionsEnum.CoverDownloaded)
|
||||
.HasValue<ChaptersRetrievedActionRecord>(ActionsEnum.ChaptersRetrieved)
|
||||
.HasValue<MetadataUpdatedActionRecord>(ActionsEnum.MetadataUpdated)
|
||||
.HasValue<DataMovedActionRecord>(ActionsEnum.DataMoved)
|
||||
.HasValue<LibraryMovedActionRecord>(ActionsEnum.LibraryMoved)
|
||||
.HasValue<StartupActionRecord>(ActionsEnum.Startup);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user