From cab2b67227133086eea2b11d8623d0b077851204 Mon Sep 17 00:00:00 2001 From: David Senoner Date: Mon, 19 May 2025 16:40:11 +0200 Subject: [PATCH] show floors in descending order --- package.json | 26 ++++++------ src/routes/(app)/+layout.server.js | 3 +- src/routes/(app)/[slug]/+page.server.ts | 52 +++++++++++------------ src/routes/(app)/settings/+page.server.js | 7 +++ 4 files changed, 48 insertions(+), 40 deletions(-) diff --git a/package.json b/package.json index 44dcd11..cbcfa3b 100644 --- a/package.json +++ b/package.json @@ -21,27 +21,27 @@ "devDependencies": { "@exodus/schemasafe": "^1.3.0", "@internationalized/date": "^3.8.0", - "@lucide/svelte": "^0.482.0", - "@sinclair/typebox": ">=0.32.30 <1", + "@lucide/svelte": "^0.511.0", + "@sinclair/typebox": "^0.34.33", "@sveltejs/adapter-auto": "^6.0.1", "@sveltejs/kit": "^2.21.1", "@sveltejs/vite-plugin-svelte": "^5.0.3", "@tailwindcss/vite": "^4.1.7", - "@tanstack/table-core": "^8.20.5", - "@typeschema/class-validator": "^0.2.0", - "@vinejs/vine": "^1.8.0", - "arktype": ">=2.0.0-rc.8", + "@tanstack/table-core": "^8.21.3", + "@typeschema/class-validator": "^0.3.0", + "@vinejs/vine": "^3.0.1", + "arktype": "^2.1.20", "autoprefixer": "^10.4.21", "bits-ui": "1.5.2", - "class-validator": "^0.14.1", + "class-validator": "^0.14.2", "clsx": "^2.1.1", "drizzle-kit": "^0.31.1", "embla-carousel-svelte": "^8.6.0", "formsnap": "2.0.1", "husky": "^9.1.7", - "joi": "^17.13.1", + "joi": "^17.13.3", "layerchart": "2.0.0-next.6", - "lint-staged": "^15.5.2", + "lint-staged": "^16.0.0", "mode-watcher": "^1.0.7", "paneforge": "1.0.0-next.5", "prettier": "^3.5.3", @@ -54,15 +54,15 @@ "svelte-sonner": "^1.0.1", "sveltekit-superforms": "^2.25.0", "tailwind-merge": "^3.3.0", - "tailwind-variants": "^0.2.1", + "tailwind-variants": "^1.0.0", "tailwindcss": "^4.1.7", "tw-animate-css": "^1.3.0", "typescript": "^5.8.3", - "valibot": ">=0.33.0 <1", + "valibot": "^1.1.0", "vaul-svelte": "1.0.0-next.7", "vite": "^6.3.5", - "yup": "^1.4.0", - "zod": "^3.24.4" + "yup": "^1.6.1", + "zod": "^3.25.1" }, "dependencies": { "@node-rs/argon2": "^2.0.2", diff --git a/src/routes/(app)/+layout.server.js b/src/routes/(app)/+layout.server.js index ffe13e1..e274fdf 100644 --- a/src/routes/(app)/+layout.server.js +++ b/src/routes/(app)/+layout.server.js @@ -1,6 +1,7 @@ import { db } from "$lib/server/db"; import * as table from "$lib/server/db/schema"; import { redirect } from "@sveltejs/kit"; +import { desc } from "drizzle-orm"; export const load = async (event) => { if (!event.locals.user) { @@ -9,6 +10,6 @@ export const load = async (event) => { const floors_length = (await db.select().from(table.floors).orderBy(table.floors.floor)).length; if (floors_length == 0) await db.insert(table.floors).values({ floor: 0, url: "/" }); - const floors = await db.select().from(table.floors).orderBy(table.floors.floor); + const floors = await db.select().from(table.floors).orderBy(desc(table.floors.floor)); return { user: event.locals.user, floors: floors }; }; diff --git a/src/routes/(app)/[slug]/+page.server.ts b/src/routes/(app)/[slug]/+page.server.ts index b5e7975..a39184a 100644 --- a/src/routes/(app)/[slug]/+page.server.ts +++ b/src/routes/(app)/[slug]/+page.server.ts @@ -1,36 +1,36 @@ import { db } from "$lib/server/db"; import * as table from "$lib/server/db/schema"; +import { eq } from "drizzle-orm"; import type { PageServerLoad } from "./$types"; export const load: PageServerLoad = async ({ params }) => { { - const floor = await db.select({ floor: table.plans.floor, json: table.plans.plan }).from(table.plans); - if (floor.length == 0) { - await db.insert(table.plans).values({ floor: params.slug, plan: { - "regions": [ - { "start": { "x": 100, "y": 100 }, "end": { "x": 400, "y": 100 } }, - { "start": { "x": 400, "y": 100 }, "end": { "x": 400, "y": 300 } }, - { "start": { "x": 400, "y": 300 }, "end": { "x": 100, "y": 300 } }, - { "start": { "x": 100, "y": 300 }, "end": { "x": 100, "y": 100 } } - ], - "doors": [ - { "location": { "x": 240, "y": 100 }, "width": 50, "rotation": 0 } - ], - "furnitures": [ - { - "minBound": { "x": 150, "y": 150 }, - "maxBound": { "x": 200, "y": 200 }, - "equipName": "Table", - "xPlacement": 150, - "yPlacement": 150, - "rotation": 0 - } - ] - } - }); + const floor_cnt = await db.select({ floor: table.plans.floor, json: table.plans.plan }).from(table.plans).where(eq(table.plans.floor, params.slug)); + if (floor_cnt.length == 0) { + await db.insert(table.plans).values({ floor: params.slug, plan: { + "regions": [ + { "start": { "x": 100, "y": 100 }, "end": { "x": 400, "y": 100 } }, + { "start": { "x": 400, "y": 100 }, "end": { "x": 400, "y": 300 } }, + { "start": { "x": 400, "y": 300 }, "end": { "x": 100, "y": 300 } }, + { "start": { "x": 100, "y": 300 }, "end": { "x": 100, "y": 100 } } + ], + "doors": [ + { "location": { "x": 240, "y": 100 }, "width": 50, "rotation": 0 } + ], + "furnitures": [ + { + "minBound": { "x": 150, "y": 150 }, + "maxBound": { "x": 200, "y": 200 }, + "equipName": "Table", + "xPlacement": 150, + "yPlacement": 150, + "rotation": 0 + } + ] + }}); } } - const floor = await db.select({ floor: table.plans.floor, json: table.plans.plan }).from(table.plans); - return { slug: params.slug, floor: floor }; + const floor_ = await db.select({ floor: table.plans.floor, json: table.plans.plan }).from(table.plans).where(eq(table.plans.floor, params.slug)); + return { slug: params.slug, floor: floor_ }; }; diff --git a/src/routes/(app)/settings/+page.server.js b/src/routes/(app)/settings/+page.server.js index ea72ce1..365a6b8 100644 --- a/src/routes/(app)/settings/+page.server.js +++ b/src/routes/(app)/settings/+page.server.js @@ -32,6 +32,13 @@ export const actions = { const floors = await db.select().from(table.floors); if (floors.length == 1) return fail(400, { message: "Cannot delete last floor!" }); + const exists = await db + .select({ floor: table.floors.floor }) + .from(table.floors) + .where(eq(table.floors.floor, n)); + + if (exists.length == 0) return fail(400, { message: "Floor " + n + " does not exist!" }); + await db.delete(table.floors).where(eq(table.floors.floor, n)); }, };