shiro-orm
Version:
Access your RONIN database via TypeScript.
88 lines (86 loc) • 3.02 kB
JavaScript
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
};