UNPKG

nuxt-surrealdb

Version:

A Nuxt module aimed to simplify the use of SurrealDB

45 lines (44 loc) 1.55 kB
import { Surreal, Features } from "surrealdb"; import { createNodeEngines } from "@surrealdb/node"; import { useRuntimeConfig } from "#imports"; import { surrealHooks } from "./surreal-hooks.js"; import { H3_CONTEXT_SURREAL_MEMORY } from "../internal.js"; let client = null; export async function useSurrealMemory(event) { if (event && event.context[H3_CONTEXT_SURREAL_MEMORY] && event.context[H3_CONTEXT_SURREAL_MEMORY].isValid) { return event.context[H3_CONTEXT_SURREAL_MEMORY]; } const { surrealdb: { memory: { nodeEngine, ...config } = {} } = {} } = useRuntimeConfig(event); if (!client) { client = new Surreal({ engines: createNodeEngines(nodeEngine) }); if (!client.isConnected) { await surrealHooks.callHookParallel("surrealdb:memory:connecting", { client, config }); if (config.autoConnect !== false) { const isConnected = await client.connect("mem://", config.connectOptions); if (isConnected) { await surrealHooks.callHookParallel("surrealdb:memory:connected", { client }); } } } } if (!event) { return client; } if (!client.isFeatureSupported(Features.Sessions)) { new Error("[nuxt-surrealdb] Sessions are not supported by this SurrealDB Node engine."); return client; } const session = await client[config.session === "fork" ? "forkSession" : "newSession"](); event.context.surrealdb = session; await surrealHooks.callHookParallel("surrealdb:memory:session:init", { session, event }); return session; }