diff --git a/bizmatch-server/src/listings/commercial-property.service.ts b/bizmatch-server/src/listings/commercial-property.service.ts index aab76cb..a462540 100644 --- a/bizmatch-server/src/listings/commercial-property.service.ts +++ b/bizmatch-server/src/listings/commercial-property.service.ts @@ -162,8 +162,22 @@ export class CommercialPropertyService { // #### CREATE ######################################## async createListing(data: CommercialPropertyListing): Promise { try { + // Hole die nächste serialId von der Sequence + const sequenceResult = await this.conn.execute(sql`SELECT nextval('commercials_json_serial_id_seq') AS serialid`); + + // Prüfe, ob ein gültiger Wert zurückgegeben wurde + if (!sequenceResult.rows || !sequenceResult.rows[0] || sequenceResult.rows[0].serialid === undefined) { + throw new Error('Failed to retrieve serialId from sequence commercials_json_serial_id_seq'); + } + + const serialId = Number(sequenceResult.rows[0].serialid); // Konvertiere BIGINT zu Number + if (isNaN(serialId)) { + throw new Error('Invalid serialId received from sequence'); + } + data.created = data.created ? (typeof data.created === 'string' ? new Date(data.created) : data.created) : new Date(); data.updated = new Date(); + data.serialId = Number(serialId); CommercialPropertyListingSchema.parse(data); const { id, email, ...rest } = data; const convertedCommercialPropertyListing = { email, data: rest };