@rstore/nuxt-drizzle
Version:
Rstore + Nuxt + Drizzle
28 lines (27 loc) • 852 B
JavaScript
import { createError, eventHandler, getQuery, getRouterParams } from "h3";
import { getDrizzleCondition, getDrizzleTableFromModel, rstoreUseDrizzle } from "../utils/index.js";
export default eventHandler(async (event) => {
const { model: modelName } = getRouterParams(event);
const { table } = getDrizzleTableFromModel(modelName);
const query = getQuery(event);
const q = rstoreUseDrizzle().select().from(table);
if (query.where) {
try {
const where = JSON.parse(query.where);
if (where) {
const condition = getDrizzleCondition(table, where);
q.where(condition);
}
} catch (e) {
console.error(e);
throw createError({
statusCode: 400,
statusMessage: "Invalid filter"
});
}
}
if (query.limit != null) {
q.limit(query.limit);
}
return q.$dynamic();
});