agnostic-query
Version:
Type-safe fluent builder for portable query schemas. Runtime-agnostic, database-agnostic — the same QuerySchema drives Drizzle, Kysely, db0, or raw SQL.
20 lines (19 loc) • 965 B
JavaScript
import { _toSql, buildWhere, quoteIdent, toSqlOrderBy as toSqlOrderBy$1 } from "./common.js";
//#region src/sql/pg.ts
const fieldToStr = (field) => {
if (field.length === 1) return quoteIdent(field[0]);
const [root, ...rest] = field;
if (rest.every((p) => typeof p === "number")) return `${quoteIdent(root)}${rest.map((i) => `[${i + 1}]`).join("")}`;
const segStr = rest.map((p) => typeof p === "number" ? String(p) : `'${p.replace(/'/g, "''")}'`);
const last = segStr.pop();
const prefix = segStr.join("->");
return prefix ? `${quoteIdent(root)}->${prefix}->>${last}` : `${quoteIdent(root)}->>${last}`;
};
const toSqlWhere = (where) => {
if (!where) return;
return buildWhere(where, fieldToStr, (i) => `$${i}`);
};
const toSqlOrderBy = (orderBy) => toSqlOrderBy$1(orderBy, fieldToStr);
const toSql = (json) => _toSql(json, fieldToStr, (w) => buildWhere(w, fieldToStr, (i) => `$${i}`));
//#endregion
export { fieldToStr, toSql, toSqlOrderBy, toSqlWhere };