forked from jappel/leistungsbilanz-ts
Add project overview import
This commit is contained in:
parent
0180f768ac
commit
194bc9c0b1
9 changed files with 268 additions and 32 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue