UNPKG

shiro-orm

Version:

Access your RONIN database via TypeScript.

88 lines (86 loc) 3.02 kB
import { QUERY_SYMBOLS, getQuerySymbol, getSyntaxProxy } from "../chunk-NXXOROUL.js"; // ../shiro-syntax/dist/schema/index.js var model = (model2) => { return getSyntaxProxy({ modelType: true, chaining: false })(model2); }; var primitive = (type) => { return (initialAttributes = {}) => { return getSyntaxProxy({ propertyValue: true })({ ...initialAttributes, type }); }; }; var string = primitive("string"); var number = primitive("number"); var link = primitive("link"); var json = primitive("json"); var date = primitive("date"); var boolean = primitive("boolean"); var blob = primitive("blob"); var expression = (expression2) => ({ [QUERY_SYMBOLS.EXPRESSION]: expression2 }); var op = (left, operator, right) => { let leftValue = left; if (typeof left === "object" && QUERY_SYMBOLS.EXPRESSION in left) { leftValue = left[QUERY_SYMBOLS.EXPRESSION]; } let rightValue = right; if (typeof right === "object" && QUERY_SYMBOLS.EXPRESSION in right) { rightValue = right[QUERY_SYMBOLS.EXPRESSION]; } let wrappedLeft = leftValue; if (typeof leftValue === "string" && !(typeof left === "object" && (QUERY_SYMBOLS.EXPRESSION in left || QUERY_SYMBOLS.FIELD in left))) { wrappedLeft = `'${leftValue}'`; } let wrappedRight = rightValue; if (typeof rightValue === "string" && !(typeof right === "object" && (QUERY_SYMBOLS.EXPRESSION in right || QUERY_SYMBOLS.FIELD in right))) { wrappedRight = `'${rightValue}'`; } return expression(`(${wrappedLeft} ${operator} ${wrappedRight})`); }; var sql = (expressions) => expression(expressions); var random = () => expression("random()"); var abs = (value) => { const valueExpression = typeof value === "object" && QUERY_SYMBOLS.EXPRESSION in value ? value[QUERY_SYMBOLS.EXPRESSION] : value; return expression(`abs(${valueExpression})`); }; var strftime = (format, timestamp) => expression(`strftime('${format}', '${timestamp}')`); var json_extract = (json2, path) => expression(`json_extract('${json2}', '${path}')`); var json_patch = (patch, input) => expression(`json_patch('${patch}', '${input}')`); var json_set = (json2, path, value) => expression(`json_set('${json2}', '${path}', '${value}')`); var json_replace = (json2, path, value) => expression(`json_replace('${json2}', '${path}', '${value}')`); var json_insert = (json2, path, value) => expression(`json_insert('${json2}', '${path}', '${value}')`); var concat = (...values) => { const formattedValues = values.map((value) => { const symbol = getQuerySymbol(value); return symbol?.type === "expression" ? symbol.value : `'${value}'`; }); return expression(`concat(${formattedValues.join(", ")})`); }; var replace = (input, search, replacement) => expression(`replace('${input}', '${search}', '${replacement}')`); export { abs, blob, boolean, concat, date, json, json_extract, json_insert, json_patch, json_replace, json_set, link, model, number, op, random, replace, sql, strftime, string };