@rstore/nuxt-drizzle
Version:
Rstore + Nuxt + Drizzle
24 lines (23 loc) • 991 B
JavaScript
import { and, eq } from "drizzle-orm";
import { defineEventHandler, getRouterParams, readBody } from "h3";
import { getDrizzleDialect, getDrizzleTableFromModel, rstoreUseDrizzle } from "../utils/index.js";
export default defineEventHandler(async (event) => {
const { model: modelName } = getRouterParams(event);
const { table } = getDrizzleTableFromModel(modelName);
const body = await readBody(event);
const q = rstoreUseDrizzle().insert(table).values(body);
const dialect = getDrizzleDialect();
if (dialect === "pg" || dialect === "sqlite") {
const result = await q.returning();
return result[0];
} else if (dialect === "mysql" || dialect === "singlestore") {
const result = await q.$returningId();
const primaryKey = result[0];
const select = await rstoreUseDrizzle().select().from(table).where(and(
...Object.entries(primaryKey).map(([key, value]) => {
return eq(table[key], value);
})
)).limit(1);
return select[0];
}
});