UNPKG

nuxt-surrealdb

Version:

A Nuxt module aimed to simplify the use of SurrealDB

160 lines (159 loc) 4.05 kB
import { toRef, toValue, useAsyncData, useSurreal } from "#imports"; export async function useSurrealAsyncData(cb, asyncDataOptions, _key) { if (typeof asyncDataOptions === "string") { _key = asyncDataOptions; asyncDataOptions = void 0; } const { data, error, pending, status, execute, refresh, clear } = await useAsyncData( _key, async () => { const client = await useSurreal(); return cb(client); }, asyncDataOptions ); return { data, error, pending, status, execute, refresh, clear }; } export async function useSurrealAuth(asyncDataOptions, _key) { if (typeof asyncDataOptions === "string") { _key = asyncDataOptions; asyncDataOptions = void 0; } return useSurrealAsyncData( async (client) => { return await client.auth().json(); }, asyncDataOptions, _key ); } export async function useSurrealExport(expOptions, asyncDataOptions, _key) { if (typeof expOptions === "string") { _key = expOptions; expOptions = void 0; } else if (typeof asyncDataOptions === "string") { _key = asyncDataOptions; asyncDataOptions = void 0; } const expOptionsRef = toRef(expOptions); return useSurrealAsyncData( async (client) => { return await client.export(expOptionsRef.value); }, { ...asyncDataOptions, watch: [...asyncDataOptions?.watch || [], expOptionsRef] }, _key ); } export async function useSurrealImport(input, asyncDataOptions, _key) { if (typeof asyncDataOptions === "string") { _key = asyncDataOptions; asyncDataOptions = void 0; } const inputRef = toRef(input); return useSurrealAsyncData( async (client) => { await client.import(inputRef.value); return true; }, { ...asyncDataOptions, watch: [...asyncDataOptions?.watch || [], inputRef] }, _key ); } export async function useSurrealQuery(query, bindings, asyncDataOptions, _key) { if (typeof asyncDataOptions === "string") { _key = asyncDataOptions; asyncDataOptions = void 0; } else if (typeof bindings === "string") { _key = bindings; bindings = void 0; } const queryRef = toRef(query); const bindingsRef = toRef(bindings); return useSurrealAsyncData( async (client) => { return await client.query(queryRef.value, bindingsRef.value).json().collect(); }, { ...asyncDataOptions, watch: [...asyncDataOptions?.watch || [], queryRef] }, _key ); } export async function useSurrealRun(name, args, asyncDataOptions, _key) { if (typeof asyncDataOptions === "string") { _key = asyncDataOptions; asyncDataOptions = void 0; } else if (typeof args === "string") { _key = args; args = void 0; } const nameRef = toRef(name); const argsRef = toRef(args); return useSurrealAsyncData( async (client) => { return await client.run(nameRef.value, argsRef.value).json(); }, { ...asyncDataOptions, watch: [...asyncDataOptions?.watch || [], nameRef, argsRef] }, _key ); } export async function useSurrealSelect(tableOrRecord, select, asyncDataOptions, _key) { if (typeof asyncDataOptions === "string") { _key = asyncDataOptions; asyncDataOptions = void 0; } else if (typeof select === "string") { _key = select; select = void 0; } return useSurrealAsyncData( async (client) => { const builder = client.select(toValue(tableOrRecord)); const configured = select ? select(builder) : builder; return await configured.json(); }, { ...asyncDataOptions, watch: [...asyncDataOptions?.watch || [], toRef(tableOrRecord)] }, _key ); } export async function useSurrealVersion(asyncDataOptions, _key) { if (typeof asyncDataOptions === "string") { _key = asyncDataOptions; asyncDataOptions = void 0; } return useSurrealAsyncData( async (client) => { return await client.version(); }, asyncDataOptions, _key ); }