Aetheria/Aetheria.State.Daemon/AetheriaYmirPersistenceDocuments.cs

43 lines
1.8 KiB
C#

using GameCult.Caching;
using MessagePack;
namespace Aetheria.State.Daemon;
[CultDocument("gamecult.aetheria.ymir_persistence_marker", "gamecult.aetheria.ymir_persistence_marker.v1")]
[MessagePackObject]
public sealed class AetheriaYmirPersistenceMarkerDocument
{
public const string RecordKey = "private:aetheria.ymir.persistence.v1";
[Key(0)] public string FormatId { get; set; } = "gamecult.aetheria.ymir.persistence.v1";
[Key(1)] public string ActivatedAtUtc { get; set; } = "";
}
[CultDocument("gamecult.aetheria.ymir_journal_chunk", "gamecult.aetheria.ymir_journal_chunk.v1")]
[MessagePackObject]
public sealed class AetheriaYmirJournalChunkDocument
{
[Key(0)] public string RunId { get; set; } = "";
[Key(1)] public int ZoneIndex { get; set; }
[Key(2)] public string Channel { get; set; } = "";
[Key(3)] public string SessionGeneration { get; set; } = "";
[Key(4)] public long FirstEntryIndex { get; set; }
[Key(5)] public int EntryCount { get; set; }
[Key(6)] public byte[] Payload { get; set; } = [];
}
[CultDocument("gamecult.aetheria.ymir_resume", "gamecult.aetheria.ymir_resume.v1")]
[MessagePackObject]
public sealed class AetheriaYmirResumeDocument
{
[Key(0)] public string RunId { get; set; } = "";
[Key(1)] public int ZoneIndex { get; set; }
[Key(2)] public long FrameId { get; set; }
[Key(3)] public int SimulationStepIndex { get; set; }
[Key(4)] public string WorldSessionGeneration { get; set; } = "";
[Key(5)] public long WorldJournalEntryCount { get; set; }
[Key(6)] public byte[] WorldDescriptorPayload { get; set; } = [];
[Key(7)] public string PayloadSessionGeneration { get; set; } = "";
[Key(8)] public long PayloadJournalEntryCount { get; set; }
[Key(9)] public byte[] PayloadDescriptorPayload { get; set; } = [];
}