Canvas: Render network nodes

Change-Id: I63938da205af9377a1e210c0e972591142211a68
diff --git a/apps/canvas/back/index.js b/apps/canvas/back/index.js
deleted file mode 100644
index 32c28cd..0000000
--- a/apps/canvas/back/index.js
+++ /dev/null
@@ -1,293 +0,0 @@
-"use strict";
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
-    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-    return new (P || (P = Promise))(function (resolve, reject) {
-        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-        step((generator = generator.apply(thisArg, _arguments || [])).next());
-    });
-};
-var __importDefault = (this && this.__importDefault) || function (mod) {
-    return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const client_1 = require("@prisma/client");
-const express_1 = __importDefault(require("express"));
-const node_process_1 = require("node:process");
-const axios_1 = __importDefault(require("axios"));
-const db = new client_1.PrismaClient();
-const handleProjectCreate = (req, resp) => __awaiter(void 0, void 0, void 0, function* () {
-    try {
-        const { id } = yield db.project.create({
-            data: {
-                userId: "gio", // req.get("x-forwarded-userid")!,
-                name: req.body.name,
-            },
-        });
-        resp.status(200);
-        resp.header("Content-Type", "application/json");
-        resp.write(JSON.stringify({
-            id,
-        }));
-    }
-    catch (e) {
-        console.log(e);
-        resp.status(500);
-    }
-    finally {
-        resp.end();
-    }
-});
-const handleProjectAll = (req, resp) => __awaiter(void 0, void 0, void 0, function* () {
-    try {
-        const r = yield db.project.findMany({
-            where: {
-                userId: "gio", // req.get("x-forwarded-userid")!,
-            },
-        });
-        resp.status(200);
-        resp.header("Content-Type", "application/json");
-        resp.write(JSON.stringify(r.map((p) => ({
-            id: p.id.toString(),
-            name: p.name,
-        }))));
-    }
-    catch (e) {
-        console.log(e);
-        resp.status(500);
-    }
-    finally {
-        resp.end();
-    }
-});
-const handleSave = (req, resp) => __awaiter(void 0, void 0, void 0, function* () {
-    try {
-        yield db.project.update({
-            where: {
-                id: Number(req.params["projectId"]),
-            },
-            data: {
-                draft: Buffer.from(JSON.stringify(req.body)),
-            },
-        });
-        resp.status(200);
-    }
-    catch (e) {
-        console.log(e);
-        resp.status(500);
-    }
-    finally {
-        resp.end();
-    }
-});
-const handleSavedGet = (req, resp) => __awaiter(void 0, void 0, void 0, function* () {
-    try {
-        const r = yield db.project.findUnique({
-            where: {
-                id: Number(req.params["projectId"]),
-            },
-            select: {
-                state: true,
-                draft: true,
-            },
-        });
-        if (r == null) {
-            resp.status(404);
-        }
-        else {
-            resp.status(200);
-            resp.header("content-type", "application/json");
-            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();
-    }
-});
-const handleDelete = (req, resp) => __awaiter(void 0, void 0, void 0, function* () {
-    try {
-        const projectId = Number(req.params["projectId"]);
-        const p = yield db.project.findUnique({
-            where: {
-                id: projectId,
-            },
-            select: {
-                instanceId: true,
-            },
-        });
-        if (p === null) {
-            resp.status(404);
-            return;
-        }
-        const r = yield axios_1.default.request({
-            url: `http://appmanager.hgrz-appmanager.svc.cluster.local/api/instance/${p.instanceId}/remove`,
-            method: "post",
-        });
-        if (r.status === 200) {
-            yield db.project.delete({
-                where: {
-                    id: projectId,
-                },
-            });
-        }
-        resp.status(200);
-    }
-    catch (e) {
-        console.log(e);
-        resp.status(500);
-    }
-    finally {
-        resp.end();
-    }
-});
-const handleDeploy = (req, resp) => __awaiter(void 0, void 0, void 0, function* () {
-    try {
-        const projectId = Number(req.params["projectId"]);
-        const state = Buffer.from(JSON.stringify(req.body.state));
-        const p = yield db.project.findUnique({
-            where: {
-                id: projectId,
-            },
-            select: {
-                instanceId: true,
-            },
-        });
-        if (p === null) {
-            resp.status(404);
-            return;
-        }
-        yield db.project.update({
-            where: {
-                id: projectId,
-            },
-            data: {
-                draft: state,
-            },
-        });
-        let r;
-        if (p.instanceId == null) {
-            r = yield axios_1.default.request({
-                url: "http://appmanager.hgrz-appmanager.svc.cluster.local/api/dodo-app",
-                method: "post",
-                data: {
-                    config: req.body.config,
-                },
-            });
-            if (r.status === 200) {
-                yield db.project.update({
-                    where: {
-                        id: projectId,
-                    },
-                    data: {
-                        state,
-                        draft: null,
-                        instanceId: r.data.id,
-                        deployKey: r.data.deployKey,
-                    },
-                });
-            }
-        }
-        else {
-            r = yield axios_1.default.request({
-                url: `http://appmanager.hgrz-appmanager.svc.cluster.local/api/dodo-app/${p.instanceId}`,
-                method: "put",
-                data: {
-                    config: req.body.config,
-                },
-            });
-            if (r.status === 200) {
-                yield db.project.update({
-                    where: {
-                        id: projectId,
-                    },
-                    data: {
-                        state,
-                        draft: null,
-                    },
-                });
-            }
-        }
-    }
-    catch (e) {
-        console.log(e);
-        resp.status(500);
-    }
-    finally {
-        resp.end();
-    }
-});
-const handleStatus = (req, resp) => __awaiter(void 0, void 0, void 0, function* () {
-    try {
-        const projectId = Number(req.params["projectId"]);
-        const p = yield db.project.findUnique({
-            where: {
-                id: projectId,
-            },
-            select: {
-                instanceId: true,
-            },
-        });
-        console.log(projectId, p);
-        if (p === null) {
-            resp.status(404);
-            return;
-        }
-        if (p.instanceId == null) {
-            resp.status(404);
-            return;
-        }
-        const r = yield axios_1.default.request({
-            url: `http://appmanager.hgrz-appmanager.svc.cluster.local/api/tasks/${p.instanceId}`,
-            method: "get",
-        });
-        resp.status(r.status);
-        if (r.status === 200) {
-            resp.write(JSON.stringify(r.data));
-        }
-    }
-    catch (e) {
-        console.log(e);
-        resp.status(500);
-    }
-    finally {
-        resp.end();
-    }
-});
-function start() {
-    return __awaiter(this, void 0, void 0, function* () {
-        yield db.$connect();
-        const app = (0, express_1.default)();
-        app.use(express_1.default.json());
-        app.post("/api/project/:projectId/saved", handleSave);
-        app.get("/api/project/:projectId/saved", handleSavedGet);
-        app.post("/api/project/:projectId/deploy", handleDeploy);
-        app.get("/api/project/:projectId/status", handleStatus);
-        app.delete("/api/project/:projectId", handleDelete);
-        app.get("/api/project", handleProjectAll);
-        app.post("/api/project", handleProjectCreate);
-        app.use("/", express_1.default.static("../front/dist"));
-        app.listen(node_process_1.env.DODO_PORT_WEB, () => {
-            console.log("started");
-        });
-    });
-}
-start();
diff --git a/apps/canvas/back/package.json b/apps/canvas/back/package.json
index 566a723..b05fb1e 100644
--- a/apps/canvas/back/package.json
+++ b/apps/canvas/back/package.json
@@ -5,7 +5,7 @@
   "main": "index.js",
   "scripts": {
     "build": "tsc",
-    "start": "node index.js"
+    "start": "node dist/index.js"
   },
   "author": "",
   "license": "ISC",
diff --git a/apps/canvas/back/tsconfig.json b/apps/canvas/back/tsconfig.json
index 56a8ab8..07ecd1d 100644
--- a/apps/canvas/back/tsconfig.json
+++ b/apps/canvas/back/tsconfig.json
@@ -1,6 +1,7 @@
 {
   "compilerOptions": {
     /* Visit https://aka.ms/tsconfig to read more about this file */
+    "outDir": "dist",
 
     /* Projects */
     // "incremental": true,                              /* Save .tsbuildinfo files to allow for incremental compilation of projects. */