Canvas: Edit/Deploy mode
Change-Id: I51e5b6c2a1f06009433b0d0824ffcf3dfe39d34e
diff --git a/apps/canvas/back/src/index.ts b/apps/canvas/back/src/index.ts
index 653eeaa..3c276d7 100644
--- a/apps/canvas/back/src/index.ts
+++ b/apps/canvas/back/src/index.ts
@@ -79,24 +79,26 @@
}
};
-const handleSavedGet: express.Handler = async (req, resp) => {
- try {
- const r = await db.project.findUnique({
- where: {
- id: Number(req.params["projectId"]),
- userId: resp.locals.userId,
- },
- select: {
- state: true,
- draft: true,
- },
- });
- if (r == null) {
- resp.status(404);
- } else {
+function handleSavedGet(state: "deploy" | "draft"): express.Handler {
+ return async (req, resp) => {
+ try {
+ const r = await db.project.findUnique({
+ where: {
+ id: Number(req.params["projectId"]),
+ userId: resp.locals.userId,
+ },
+ select: {
+ state: true,
+ draft: true,
+ },
+ });
+ if (r == null) {
+ resp.status(404);
+ return;
+ }
resp.status(200);
resp.header("content-type", "application/json");
- if (r.draft == null) {
+ if (state === "deploy") {
if (r.state == null) {
resp.send({
nodes: [],
@@ -107,16 +109,28 @@
resp.send(JSON.parse(Buffer.from(r.state).toString("utf8")));
}
} else {
- resp.send(JSON.parse(Buffer.from(r.draft).toString("utf8")));
+ if (r.draft == null) {
+ if (r.state == null) {
+ resp.send({
+ nodes: [],
+ edges: [],
+ viewport: { x: 0, y: 0, zoom: 1 },
+ });
+ } else {
+ resp.send(JSON.parse(Buffer.from(r.state).toString("utf8")));
+ }
+ } else {
+ resp.send(JSON.parse(Buffer.from(r.draft).toString("utf8")));
+ }
}
+ } catch (e) {
+ console.log(e);
+ resp.status(500);
+ } finally {
+ resp.end();
}
- } catch (e) {
- console.log(e);
- resp.status(500);
- } finally {
- resp.end();
- }
-};
+ };
+}
const handleDelete: express.Handler = async (req, resp) => {
try {
@@ -554,7 +568,8 @@
app.use(express.json());
app.use(auth);
app.post("/api/project/:projectId/saved", handleSave);
- app.get("/api/project/:projectId/saved", handleSavedGet);
+ app.get("/api/project/:projectId/saved/deploy", handleSavedGet("deploy"));
+ app.get("/api/project/:projectId/saved/draft", handleSavedGet("draft"));
app.post("/api/project/:projectId/deploy", handleDeploy);
app.get("/api/project/:projectId/status", handleStatus);
app.delete("/api/project/:projectId", handleDelete);