UNPKG

shiro-orm

Version:

Access your RONIN database via TypeScript.

154 lines (151 loc) 4.43 kB
import { QUERY_SYMBOLS, isStorableObject, mergeOptions, runQueries, runQueriesWithStorageAndTriggers } from "./chunk-5VI443KP.js"; import { getBatchProxy, getBatchProxySQL, getSyntaxProxy, getSyntaxProxySQL } from "./chunk-NXXOROUL.js"; // src/utils/handlers.ts var queriesHandler = async (queries, options = {}) => { if (!options.token && typeof process !== "undefined") { const token2 = typeof process?.env !== "undefined" ? process.env.RONIN_TOKEN : typeof import.meta?.env !== "undefined" ? import.meta.env.RONIN_TOKEN : void 0; if (!token2 || token2 === "undefined") { const message = "Please specify the `RONIN_TOKEN` environment variable or set the `token` option when invoking RONIN."; throw new Error(message); } options.token = token2; } const token = options.token; if (!token) { let message = "When invoking RONIN from an edge runtime, the"; message += " `token` option must be set."; throw new Error(message); } if ("statements" in queries) { const results = await runQueries( queries.statements.map((statement) => ({ statement })), options ); return results.map(({ result }) => result); } if (options.database) { const queryList = { [options.database]: queries }; const result = await runQueriesWithStorageAndTriggers(queryList, options); return result[options.database]; } return runQueriesWithStorageAndTriggers(queries, options); }; var queryHandler = async (query, options) => { const input = "statement" in query ? { statements: [query.statement] } : [query]; const results = await queriesHandler(input, options); return results[0]; }; // src/index.ts var createSyntaxFactory = (options) => { const callback = (defaultQuery, queryOptions) => { const query = defaultQuery; return queryHandler(query[QUERY_SYMBOLS.QUERY], mergeOptions(options, queryOptions)); }; const replacer = (value) => isStorableObject(value) ? value : void 0; return { // Query types for interacting with records. get: getSyntaxProxy({ root: `${QUERY_SYMBOLS.QUERY}.get`, callback, replacer }), set: getSyntaxProxy({ root: `${QUERY_SYMBOLS.QUERY}.set`, callback, replacer }), add: getSyntaxProxy({ root: `${QUERY_SYMBOLS.QUERY}.add`, callback, replacer }), remove: getSyntaxProxy({ root: `${QUERY_SYMBOLS.QUERY}.remove`, callback, replacer }), count: getSyntaxProxy({ root: `${QUERY_SYMBOLS.QUERY}.count`, callback, replacer }), // Query types for interacting with the database schema. list: getSyntaxProxy({ root: `${QUERY_SYMBOLS.QUERY}.list`, callback, replacer }), create: getSyntaxProxy({ root: `${QUERY_SYMBOLS.QUERY}.create`, callback, replacer }), alter: getSyntaxProxy({ root: `${QUERY_SYMBOLS.QUERY}.alter`, callback, replacer }), drop: getSyntaxProxy({ root: `${QUERY_SYMBOLS.QUERY}.drop`, callback, replacer }), // Function for executing a transaction containing multiple queries. batch: (operations, queryOptions) => { const batchOperations = operations; const queries = getBatchProxy(batchOperations).map(({ structure }) => structure); const finalOptions = mergeOptions(options, queryOptions); return queriesHandler(queries, finalOptions); }, sql: getSyntaxProxySQL({ callback: (statement) => queryHandler({ statement }, mergeOptions(options, {})) }), sqlBatch: (operations, queryOptions) => { const batchOperations = operations; const statements = getBatchProxySQL(batchOperations); const finalOptions = mergeOptions(options, queryOptions); return queriesHandler({ statements }, finalOptions); } }; }; var factory = createSyntaxFactory({}); var get = factory.get; var set = factory.set; var add = factory.add; var remove = factory.remove; var count = factory.count; var list = factory.list; var create = factory.create; var alter = factory.alter; var drop = factory.drop; var batch = factory.batch; var sql = factory.sql; var sqlBatch = factory.sqlBatch; var index_default = createSyntaxFactory; export { add, alter, batch, count, create, createSyntaxFactory, index_default as default, drop, get, list, remove, set, sql, sqlBatch };