From abf90b9192b9f8d69fe6f151cb4fa6da9576ed32 Mon Sep 17 00:00:00 2001 From: Candid Dauth Date: Sat, 5 Jun 2021 01:01:41 +0200 Subject: [PATCH] Fix error when saving route as line --- server/src/database/helpers.ts | 3 +++ server/src/database/line.ts | 6 +++--- server/src/database/route.ts | 7 ++++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/server/src/database/helpers.ts b/server/src/database/helpers.ts index f3c1d800..eff0ca5e 100644 --- a/server/src/database/helpers.ts +++ b/server/src/database/helpers.ts @@ -43,6 +43,9 @@ export function getPosType(): ModelAttributeColumnOptions { allowNull: false, get() { return undefined; + }, + set() { + throw new Error('Cannot set pos directly.'); } }; } diff --git a/server/src/database/line.ts b/server/src/database/line.ts index ae0fae4c..f47215f7 100644 --- a/server/src/database/line.ts +++ b/server/src/database/line.ts @@ -260,7 +260,7 @@ export default class DatabaseLines { const points = await this._db.helpers._bulkCreateInBatches(this.LinePointModel, create); if(!_noEvent) - this._db.emit("linePoints", padId, lineId, points); + this._db.emit("linePoints", padId, lineId, points.map((point) => omit(point, ["lineId", "pos"]) as TrackPoint)); } async deleteLine(padId: PadId, lineId: ID): Promise { @@ -290,7 +290,7 @@ export default class DatabaseLines { return Object.entries(groupBy(linePoints, "lineId")).map(([key, val]) => ({ id: Number(key), - trackPoints: val.map((p) => omit(p.toJSON(), ["lineId"])) + trackPoints: val.map((p) => omit(p.toJSON(), ["lineId", "pos"])) })); })).flatten(); } @@ -300,7 +300,7 @@ export default class DatabaseLines { attributes: [ "pos", "lat", "lon", "ele", "zoom", "idx" ], order: [["idx", "ASC"]] }); - return points.map((point) => point.toJSON() as TrackPoint); + return points.map((point) => omit(point.toJSON(), ["pos"]) as TrackPoint); } } \ No newline at end of file diff --git a/server/src/database/route.ts b/server/src/database/route.ts index 508818db..b7be553c 100644 --- a/server/src/database/route.ts +++ b/server/src/database/route.ts @@ -5,6 +5,7 @@ import { BboxWithZoom, ID, Latitude, Longitude, PadId, Point, Route, RouteMode, import { BboxWithExcept, getPosType, getVirtualLatType, getVirtualLonType, makeBboxCondition } from "./helpers"; import { WhereOptions } from "sequelize/types/lib/model"; import { calculateRouteForLine } from "../routing/routing"; +import { omit } from "lodash"; const updateTimes: Record = {}; @@ -68,7 +69,7 @@ export default class DatabaseRoutes { where: cond, attributes: [ "pos", "lat", "lon", "idx", "ele"], order: [[ "idx", "ASC" ]] - })).map((point) => point.toJSON()); + })).map((point) => omit(point.toJSON(), ["pos"]) as TrackPoint); } async generateRouteId(): Promise { @@ -199,7 +200,7 @@ export default class DatabaseRoutes { attributes: [ "pos", "lat", "lon", "idx", "ele" ], order: [[ "idx", "ASC" ]] }); - return data.map((d) => d.toJSON()); + return data.map((d) => omit(d.toJSON(), ["pos"]) as TrackPoint); } async getAllRoutePoints(routeId: string): Promise { @@ -207,7 +208,7 @@ export default class DatabaseRoutes { where: {routeId}, attributes: [ "pos", "lat", "lon", "idx", "ele", "zoom"] }); - return data.map((d) => d.toJSON()); + return data.map((d) => omit(d.toJSON(), ["pos"]) as TrackPoint); } } \ No newline at end of file