Add project overview import
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
import type { NextFunction, Request, Response } from "express";
|
||||
import { ProjectRevisionConflictError } from "../../domain/errors/project-revision-conflict.error.js";
|
||||
import { ProjectStateConflictError } from "../../domain/errors/project-state-conflict.error.js";
|
||||
import { importProjectTransferSchema } from "../../shared/validation/project-transfer.schemas.js";
|
||||
import {
|
||||
importProjectTransferAsNewSchema,
|
||||
importProjectTransferSchema,
|
||||
} from "../../shared/validation/project-transfer.schemas.js";
|
||||
import { projectCommandService } from "../composition/project-command-stores.js";
|
||||
import { projectTransferStore } from "../composition/project-transfer-store.js";
|
||||
|
||||
@@ -22,6 +25,31 @@ export function exportProjectTransfer(req: Request, res: Response) {
|
||||
return res.json(transfer);
|
||||
}
|
||||
|
||||
export function importProjectTransferAsNewProject(
|
||||
req: Request,
|
||||
res: Response,
|
||||
next: NextFunction
|
||||
) {
|
||||
const parsed = importProjectTransferAsNewSchema.safeParse(req.body);
|
||||
if (!parsed.success) {
|
||||
return res.status(400).json({ error: parsed.error.flatten() });
|
||||
}
|
||||
try {
|
||||
return res
|
||||
.status(201)
|
||||
.json(projectTransferStore.importDuplicate(parsed.data.transfer));
|
||||
} catch (error) {
|
||||
if (
|
||||
error instanceof Error &&
|
||||
(error.message.startsWith("Project transfer") ||
|
||||
error.message.startsWith("Snapshot"))
|
||||
) {
|
||||
return res.status(400).json({ error: error.message });
|
||||
}
|
||||
return next(error);
|
||||
}
|
||||
}
|
||||
|
||||
export function importProjectTransfer(
|
||||
req: Request,
|
||||
res: Response,
|
||||
|
||||
@@ -30,12 +30,14 @@ import {
|
||||
import {
|
||||
exportProjectTransfer,
|
||||
importProjectTransfer,
|
||||
importProjectTransferAsNewProject,
|
||||
} from "../controllers/project-transfer.controller.js";
|
||||
|
||||
export const projectRouter = Router();
|
||||
|
||||
projectRouter.get("/", listProjects);
|
||||
projectRouter.post("/", createProject);
|
||||
projectRouter.post("/import", importProjectTransferAsNewProject);
|
||||
projectRouter.get("/:projectId", getProject);
|
||||
projectRouter.get("/:projectId/export", exportProjectTransfer);
|
||||
projectRouter.post("/:projectId/import", importProjectTransfer);
|
||||
|
||||
Reference in New Issue
Block a user