mirror of
https://github.com/nicotsx/ironmount.git
synced 2025-12-10 12:10:51 +01:00
feat(frontend): restore whole snapshot
This commit is contained in:
@@ -12,7 +12,6 @@ import {
|
||||
listSnapshotsFilters,
|
||||
restoreSnapshotBody,
|
||||
restoreSnapshotDto,
|
||||
type CreateRepositoryDto,
|
||||
type DeleteRepositoryDto,
|
||||
type GetRepositoryDto,
|
||||
type ListRepositoriesDto,
|
||||
@@ -93,9 +92,9 @@ export const repositoriesController = new Hono()
|
||||
)
|
||||
.post("/:name/restore", restoreSnapshotDto, validator("json", restoreSnapshotBody), async (c) => {
|
||||
const { name } = c.req.param();
|
||||
const { snapshotId, targetPath, path, include, exclude } = c.req.valid("json");
|
||||
const { snapshotId, path, include, exclude } = c.req.valid("json");
|
||||
|
||||
const result = await repositoriesService.restoreSnapshot(name, snapshotId, targetPath, { path, include, exclude });
|
||||
const result = await repositoriesService.restoreSnapshot(name, snapshotId, { path, include, exclude });
|
||||
|
||||
return c.json<RestoreSnapshotDto>(result, 200);
|
||||
});
|
||||
|
||||
@@ -219,7 +219,6 @@ export const listSnapshotFilesDto = describeRoute({
|
||||
*/
|
||||
export const restoreSnapshotBody = type({
|
||||
snapshotId: "string",
|
||||
targetPath: "string",
|
||||
path: "string?",
|
||||
include: "string[]?",
|
||||
exclude: "string[]?",
|
||||
@@ -231,8 +230,7 @@ export const restoreSnapshotResponse = type({
|
||||
success: "boolean",
|
||||
message: "string",
|
||||
filesRestored: "number",
|
||||
filesUpdated: "number",
|
||||
totalBytes: "number",
|
||||
filesSkipped: "number",
|
||||
});
|
||||
|
||||
export type RestoreSnapshotDto = typeof restoreSnapshotResponse.infer;
|
||||
|
||||
@@ -164,7 +164,6 @@ const listSnapshotFiles = async (name: string, snapshotId: string, path?: string
|
||||
const restoreSnapshot = async (
|
||||
name: string,
|
||||
snapshotId: string,
|
||||
targetPath: string,
|
||||
options?: {
|
||||
path?: string;
|
||||
include?: string[];
|
||||
@@ -179,14 +178,13 @@ const restoreSnapshot = async (
|
||||
throw new NotFoundError("Repository not found");
|
||||
}
|
||||
|
||||
const result = await restic.restore(repository.config, snapshotId, targetPath, options);
|
||||
const result = await restic.restore(repository.config, snapshotId, "/", options);
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: "Snapshot restored successfully",
|
||||
filesRestored: result.files_restored,
|
||||
filesUpdated: result.files_updated,
|
||||
totalBytes: result.total_bytes,
|
||||
filesSkipped: result.files_skipped,
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user