Fix NumberRange

This commit is contained in:
2025-12-09 08:17:52 +01:00
parent a605fdc351
commit 0c1287d3b9
2 changed files with 87 additions and 49 deletions

View File

@@ -427,6 +427,7 @@ export default async function resourceRoutes(server: FastifyInstance) {
// Create // Create
server.post("/resource/:resource", async (req, reply) => { server.post("/resource/:resource", async (req, reply) => {
try {
if (!req.user?.tenant_id) { if (!req.user?.tenant_id) {
return reply.code(400).send({error: "No tenant selected"}); return reply.code(400).send({error: "No tenant selected"});
} }
@@ -442,9 +443,12 @@ export default async function resourceRoutes(server: FastifyInstance) {
archived: false, // Standardwert archived: false, // Standardwert
} }
console.log(resourceConfig[resource].numberRangeHolder)
if (resourceConfig[resource].numberRangeHolder && !body[resourceConfig[resource]]) { if (resourceConfig[resource].numberRangeHolder && !body[resourceConfig[resource]]) {
const result = await useNextNumberRangeNumber(server, req.user.tenant_id, resource) const result = await useNextNumberRangeNumber(server, req.user.tenant_id, resource)
createData[resourceConfig[resource]] = result.usedNumber console.log(result)
createData[resourceConfig[resource].numberRangeHolder] = result.usedNumber
} }
const [created] = await server.db const [created] = await server.db
@@ -465,6 +469,10 @@ export default async function resourceRoutes(server: FastifyInstance) {
});*/ });*/
return created; return created;
} catch (error) {
console.log(error)
reply.status(500)
}
}); });
// UPDATE (inkl. Soft-Delete/Archive) // UPDATE (inkl. Soft-Delete/Archive)

View File

@@ -7,28 +7,58 @@ import {FastifyInstance} from "fastify";
// import Sharp from 'sharp' // import Sharp from 'sharp'
// import fs from 'fs' // import fs from 'fs'
export const useNextNumberRangeNumber = async (server:FastifyInstance, tenantId:number,numberRange)=> { import { tenants } from "../../db/schema"
const {data:tenant} = await server.supabase.from("tenants").select().eq("id",tenantId).single() import { eq } from "drizzle-orm"
const numberRanges = tenant.numberRanges export const useNextNumberRangeNumber = async (
server: FastifyInstance,
tenantId: number,
numberRange: string
) => {
// 1⃣ Tenant laden
const [tenant] = await server.db
.select()
.from(tenants)
.where(eq(tenants.id, tenantId))
const usedNumber = (numberRanges[numberRange].prefix ? numberRanges[numberRange].prefix : "") + numberRanges[numberRange].nextNumber + (numberRanges[numberRange].suffix ? numberRanges[numberRange].suffix : "") if (!tenant) {
throw new Error(`Tenant ${tenantId} not found`)
}
let newNumberRange = numberRanges const numberRanges = tenant.numberRanges || {}
newNumberRange[numberRange].nextNumber += 1 if (!numberRanges[numberRange]) {
throw new Error(`Number range '${numberRange}' not found`)
}
const {error} = await server.supabase.from("tenants").update({numberRanges: newNumberRange}).eq("id",tenantId) const current = numberRanges[numberRange]
if(error) { // 2⃣ Used Number generieren
console.log(error) const usedNumber =
} else { (current.prefix || "") +
return { current.nextNumber +
usedNumber (current.suffix || "")
// 3⃣ nextNumber erhöhen
const updatedRanges = {
// @ts-ignore
...numberRanges,
[numberRange]: {
...current,
nextNumber: current.nextNumber + 1
} }
} }
// 4⃣ Tenant aktualisieren
await server.db
.update(tenants)
.set({ numberRanges: updatedRanges })
.where(eq(tenants.id, tenantId))
return { usedNumber }
} }
/* /*
export async function encodeBase64ToNiimbot(base64Png, printDirection = 'top') { export async function encodeBase64ToNiimbot(base64Png, printDirection = 'top') {
// 1⃣ PNG dekodieren // 1⃣ PNG dekodieren