PlotDirector/PlotLine/Models/ProjectBackupModels.cs

167 lines
7.8 KiB
C#

namespace PlotLine.Models;
public sealed class ProjectBackupExport
{
public string Format { get; init; } = "PlotDirector.ProjectBackup";
public string FormatVersion { get; init; } = "1.1";
public DateTime ExportedAtUtc { get; init; }
public string SourceApplication { get; init; } = "PlotDirector";
public Project? Project { get; init; }
public ProjectBackupData Data { get; init; } = new();
public ProjectBackupDiagnostics Diagnostics { get; init; } = new();
}
public sealed class ProjectBackupData
{
public IReadOnlyList<Book> Books { get; init; } = [];
public IReadOnlyList<Chapter> Chapters { get; init; } = [];
public IReadOnlyList<Scene> Scenes { get; init; } = [];
public IReadOnlyList<ProjectBackupScenePurpose> ScenePurposes { get; init; } = [];
public IReadOnlyList<ProjectBackupSceneOutcome> SceneOutcomes { get; init; } = [];
public IReadOnlyList<SceneMetricType> SceneMetricTypes { get; init; } = [];
public IReadOnlyList<SceneMetricValue> SceneMetricValues { get; init; } = [];
public IReadOnlyList<ProjectTimelineSettings> TimelineSettings { get; init; } = [];
public IReadOnlyList<ProjectTimelineMetricSetting> TimelineMetricSettings { get; init; } = [];
public IReadOnlyList<TimelineViewPreset> TimelineViewPresets { get; init; } = [];
public IReadOnlyList<PlotLineItem> PlotLines { get; init; } = [];
public IReadOnlyList<PlotThread> PlotThreads { get; init; } = [];
public IReadOnlyList<ThreadEvent> ThreadEvents { get; init; } = [];
public IReadOnlyList<StoryAsset> StoryAssets { get; init; } = [];
public IReadOnlyList<AssetState> AssetStates { get; init; } = [];
public IReadOnlyList<AssetEvent> AssetEvents { get; init; } = [];
public IReadOnlyList<AssetDependency> AssetDependencies { get; init; } = [];
public IReadOnlyList<AssetCustodyEvent> AssetCustodyEvents { get; init; } = [];
public IReadOnlyList<ProjectBackupAssetCustodyCharacter> AssetCustodyCharacters { get; init; } = [];
public IReadOnlyList<Character> Characters { get; init; } = [];
public IReadOnlyList<SceneCharacter> SceneCharacters { get; init; } = [];
public IReadOnlyList<CharacterAttributeType> CharacterAttributeTypes { get; init; } = [];
public IReadOnlyList<CharacterAttributeEvent> CharacterAttributeEvents { get; init; } = [];
public IReadOnlyList<CharacterKnowledgeItem> CharacterKnowledge { get; init; } = [];
public IReadOnlyList<CharacterRelationship> CharacterRelationships { get; init; } = [];
public IReadOnlyList<RelationshipEvent> RelationshipEvents { get; init; } = [];
public IReadOnlyList<LocationItem> Locations { get; init; } = [];
public IReadOnlyList<LocationRelationship> LocationRelationships { get; init; } = [];
public IReadOnlyList<FloorPlan> FloorPlans { get; init; } = [];
public IReadOnlyList<FloorPlanFloor> FloorPlanFloors { get; init; } = [];
public IReadOnlyList<FloorPlanBlock> FloorPlanBlocks { get; init; } = [];
public IReadOnlyList<FloorPlanTransition> FloorPlanTransitions { get; init; } = [];
public IReadOnlyList<SceneAssetLocation> SceneAssetLocations { get; init; } = [];
public IReadOnlyList<SceneFloorPlanOccupancy> SceneFloorPlanOccupancy { get; init; } = [];
public IReadOnlyList<SceneDependency> SceneDependencies { get; init; } = [];
public IReadOnlyList<ProjectBackupValidationRun> ValidationRuns { get; init; } = [];
public IReadOnlyList<ContinuityWarning> ContinuityWarnings { get; init; } = [];
public IReadOnlyList<SceneNote> SceneNotes { get; init; } = [];
public IReadOnlyList<SceneWorkflow> SceneWorkflow { get; init; } = [];
public IReadOnlyList<SceneChecklistItem> SceneChecklistItems { get; init; } = [];
public IReadOnlyList<SceneAttachment> SceneAttachments { get; init; } = [];
public IReadOnlyList<ChapterGoal> ChapterGoals { get; init; } = [];
public IReadOnlyList<Scenario> Scenarios { get; init; } = [];
public IReadOnlyList<ProjectBackupScenarioSceneOrder> ScenarioSceneOrder { get; init; } = [];
public IReadOnlyList<ProjectBackupScenarioValidationRun> ScenarioValidationRuns { get; init; } = [];
public IReadOnlyList<ScenarioWarning> ScenarioWarnings { get; init; } = [];
public IReadOnlyList<GenreMetricPreset> GenreMetricPresets { get; init; } = [];
public IReadOnlyList<ProjectBackupGenreMetricPresetMetric> GenreMetricPresetMetrics { get; init; } = [];
public IReadOnlyList<ProjectBackupAccessRecord> ProjectAccess { get; init; } = [];
public IReadOnlyList<UserFile> UserFiles { get; init; } = [];
}
public sealed class ProjectBackupDiagnostics
{
public int ProjectId { get; init; }
public IReadOnlyList<string> IncludedEntitySets { get; init; } = [];
public string? Note { get; init; }
}
public sealed class ProjectBackupResult
{
public string FileName { get; init; } = string.Empty;
public string ContentType { get; init; } = "application/json";
public string Json { get; init; } = string.Empty;
}
public sealed class ProjectBackupScenePurpose
{
public int SceneID { get; set; }
public int ScenePurposeTypeID { get; set; }
public string PurposeName { get; set; } = string.Empty;
public int SortOrder { get; set; }
}
public sealed class ProjectBackupSceneOutcome
{
public int SceneOutcomeID { get; set; }
public int SceneID { get; set; }
public string OutcomeDescription { get; set; } = string.Empty;
public int? OutcomeTypeID { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime UpdatedDate { get; set; }
}
public sealed class ProjectBackupAssetCustodyCharacter
{
public int AssetCustodyEventCharacterID { get; set; }
public int AssetCustodyEventID { get; set; }
public int? CharacterID { get; set; }
public string? CharacterName { get; set; }
public string? CharacterNameText { get; set; }
public int CustodyRoleID { get; set; }
public string CustodyRoleName { get; set; } = string.Empty;
}
public sealed class ProjectBackupValidationRun
{
public int ValidationRunID { get; set; }
public int ProjectID { get; set; }
public int? BookID { get; set; }
public DateTime StartedDate { get; set; }
public DateTime? CompletedDate { get; set; }
public string? TriggeredBy { get; set; }
public string? ScopeDescription { get; set; }
}
public sealed class ProjectBackupScenarioSceneOrder
{
public int ScenarioSceneOrderID { get; set; }
public int ScenarioID { get; set; }
public int SceneID { get; set; }
public int? ProposedChapterID { get; set; }
public int ProposedSortOrder { get; set; }
public string? Notes { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime UpdatedDate { get; set; }
}
public sealed class ProjectBackupScenarioValidationRun
{
public int ScenarioValidationRunID { get; set; }
public int ScenarioID { get; set; }
public DateTime StartedDate { get; set; }
public DateTime? CompletedDate { get; set; }
public int WarningCount { get; set; }
}
public sealed class ProjectBackupGenreMetricPresetMetric
{
public int GenreMetricPresetID { get; set; }
public string PresetKey { get; set; } = string.Empty;
public string PresetName { get; set; } = string.Empty;
public int MetricTypeID { get; set; }
public string MetricName { get; set; } = string.Empty;
public int SortOrder { get; set; }
}
public sealed class ProjectBackupAccessRecord
{
public int ProjectUserAccessID { get; set; }
public int ProjectID { get; set; }
public int UserID { get; set; }
public string Email { get; set; } = string.Empty;
public string DisplayName { get; set; } = string.Empty;
public string AccessRole { get; set; } = string.Empty;
public int? InvitedByUserID { get; set; }
public string? InvitedByEmail { get; set; }
public DateTime? InvitedDateUTC { get; set; }
public DateTime? AcceptedDateUTC { get; set; }
public bool IsActive { get; set; }
}