UNPKG

@paroicms/server

Version:
46 lines 1.64 kB
import { ApiError } from "@paroicms/public-server-lib"; import { type } from "arktype"; export async function createPartNode(cn, { nodeId, listName, documentNodeId, isOrdered, lastOrderNum, }) { await cn("PaPartNode").insert({ nodeId, listName, documentNodeId }); if (isOrdered) { await cn("PaOrderedNode").insert({ nodeId, orderNum: (lastOrderNum ?? 0) + 1, }); } } const PartNodeShiftRowAT = type({ parentId: "number", listName: "string", orderNum: "number", "+": "reject", }).pipe((r) => ({ parentId: String(r.parentId), listName: r.listName, orderNum: r.orderNum, })); export async function shiftPartNodeOrdersAfterDeletion(cn, nodeId) { const row = await cn("PaNode as l") .select("l.parentId", "p.listName", "o.orderNum") .innerJoin("PaPartNode as p", "p.nodeId", "l.id") .innerJoin("PaOrderedNode as o", "o.nodeId", "l.id") .where("l.id", nodeId) .first(); if (!row) throw new ApiError(`part-node '${nodeId}' not found`, 404); const { parentId, listName, orderNum } = PartNodeShiftRowAT.assert(row); await cn("PaOrderedNode") .whereRaw("orderNum > ?", [orderNum]) .whereExists(function () { this.select(1) .from("PaNode as l") .innerJoin("PaPartNode as p", "p.nodeId", "l.id") .whereRaw("PaOrderedNode.nodeId = l.id") .andWhere("l.parentId", parentId) .andWhere("p.listName", listName); }) .update({ orderNum: cn.raw("orderNum - 1"), }); } //# sourceMappingURL=part-node.queries.js.map