Restore named project snapshots

This commit is contained in:
2026-07-25 22:41:24 +02:00
parent 7c670fece3
commit 384a5769ab
25 changed files with 1315 additions and 206 deletions
@@ -24,6 +24,9 @@ export interface ProjectCommandExecutor {
executeUser(
input: ExecuteUserProjectCommandInput
): ExecutedProjectCommand;
executeRestore(
input: ExecuteUserProjectCommandInput
): ExecutedProjectCommand;
undo(
input: ExecuteProjectHistoryCommandInput
): ExecutedProjectCommand;
@@ -18,9 +18,19 @@ export interface CreateNamedProjectSnapshotInput {
actorId?: string;
}
export interface PreparedProjectSnapshotRestore {
snapshot: ProjectSnapshotMetadata;
command: ProjectStateRestoreCommand;
}
export interface ProjectSnapshotStore {
createNamed(
input: CreateNamedProjectSnapshotInput
): ProjectSnapshotMetadata | null;
listByProject(projectId: string): ProjectSnapshotMetadata[] | null;
prepareRestore(
projectId: string,
snapshotId: string
): PreparedProjectSnapshotRestore | null;
}
import type { ProjectStateRestoreCommand } from "../models/project-state-restore-command.model.js";
@@ -0,0 +1,26 @@
import type { ProjectStateRestoreCommand } from "../models/project-state-restore-command.model.js";
import type {
AppendedProjectRevision,
ProjectRevisionSource,
} from "./project-revision.store.js";
export interface ExecuteProjectStateRestoreCommandInput {
projectId: string;
expectedRevision: number;
source: ProjectRevisionSource;
description?: string;
actorId?: string;
historyTargetChangeSetId?: string;
command: ProjectStateRestoreCommand;
}
export interface ExecutedProjectStateRestoreCommand {
revision: AppendedProjectRevision;
inverse: ProjectStateRestoreCommand;
}
export interface ProjectStateRestoreCommandStore {
execute(
input: ExecuteProjectStateRestoreCommandInput
): ExecutedProjectStateRestoreCommand;
}