From 4f79e739c73fd155e4c3bdcca592190db7017666 Mon Sep 17 00:00:00 2001 From: kevin olson Date: Thu, 28 Aug 2025 16:23:48 -0500 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20mysql=20binary=20uuid=20support?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/runtime/server/utils/binder.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/runtime/server/utils/binder.ts b/src/runtime/server/utils/binder.ts index 4a4290e..83f84dd 100644 --- a/src/runtime/server/utils/binder.ts +++ b/src/runtime/server/utils/binder.ts @@ -1,5 +1,5 @@ import type { H3Event, Router } from 'h3' -import { eq } from 'drizzle-orm' +import { sql, eq } from 'drizzle-orm' import { createError, defineEventHandler } from 'h3' import type { BinderConfig } from '#api-utils' @@ -17,7 +17,15 @@ export function modelBinder(config: BinderConfig, router: Router) { if (!id) throw createError({ statusCode: 404, statusMessage: 'Not Found' }) - const record = await db.query[`${String(key)}s`].findFirst({ where: eq(table.columns.id, id) }) + const record = await db.query[`${String(key)}s`].findFirst({ + where: table.columns.id.columnType === 'MySqlBinary' + ? eq(table.columns.id, sql`UUID_TO_BIN(${id})`) + : eq(table.columns.id, id), + extras: { + id: sql`BIN_TO_UUID(${table.columns.id})`.as('id'), + }, + }) + if (!record) throw createError({ statusCode: 404, statusMessage: 'Not Found' })