UNPKG

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
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 };