UNPKG

nuxt-surrealdb

Version:

A Nuxt module aimed to simplify the use of SurrealDB

64 lines (63 loc) 1.7 kB
import { ofetch } from "ofetch"; import { setRequestHeaders, surrealFetchOptionsOverride } from "#surrealdb/utils/overrides"; import { createError, useSurrealPreset } from "#imports"; export function useSurrealFetch(...args) { if (typeof args[0] === "string") { args.unshift(void 0); } let [event, req, options] = args; const { database, token, ...opts } = options; const _database = useSurrealPreset(event, { database, token }); const { baseURL, headers } = surrealFetchOptionsOverride(_database); if (!baseURL) { createError({ statusCode: 500, message: "Missing SurrealDB URL" }); } const surrealFetch = ofetch.create({ baseURL, onRequest(ctx) { ctx.options.baseURL ||= baseURL; ctx.options.headers ||= setRequestHeaders(ctx.options.headers, headers); } }); return surrealFetch(req, { ...opts }); } export function useSurrealRPC(...args) { if (!("node" in args[0]) && !("method" in args[1])) { args.unshift(void 0); } let [event, req, overrides] = args; let id = 0; let _args = [event, "rpc"]; if (typeof _args[0] === "undefined") { _args.shift(); } return useSurrealFetch(..._args, { ...surrealFetchOptionsOverride(useSurrealPreset(event, overrides)), onResponse({ response }) { if (response.status === 200 && response._data.error) { throw createError({ statusCode: response._data.error.code, message: response._data.error.message }); } else if (response.status === 200 && response._data.result) { response._data = response._data.result; } }, method: "POST", body: { id: id++, ...req } }); }