UNPKG

@maxlkatze/cms

Version:

A git based Nuxt Module CMS - zero effort, zero cost

78 lines (77 loc) 2.75 kB
import { createStorage } from "unstorage"; export const useContentStorage = async (_runtimeConfig) => { const runtimeConfig = _runtimeConfig; let module; switch (runtimeConfig.storage.type) { case "azure-app-configuration": module = await import("unstorage/drivers/azure-app-configuration"); break; case "cloudflare-kv-binding": module = await import("unstorage/drivers/cloudflare-kv-binding"); break; case "fs": module = await import("unstorage/drivers/fs"); break; case "github": module = await import("unstorage/drivers/github"); break; case "mongodb": module = await import("unstorage/drivers/mongodb"); break; case "netlify-blobs": module = await import("unstorage/drivers/netlify-blobs"); break; case "planetscale": module = await import("unstorage/drivers/planetscale"); break; case "redis": module = await import("unstorage/drivers/redis"); break; case "upstash": module = await import("unstorage/drivers/upstash"); break; case "vercel-kv": module = await import("unstorage/drivers/vercel-kv"); break; default: throw new Error(`Driver ${runtimeConfig.storage.type} not found`); } let driver; const copiedOptions = JSON.parse(JSON.stringify(runtimeConfig.storage.options)); try { const nitroPackImport = module; driver = nitroPackImport(copiedOptions); } catch (e1) { try { const moduleImport = module; driver = moduleImport.default(copiedOptions); } catch (e2) { console.log("\x1B[41m\x1B[30m !Katze \x1B[0m Have you installed the driver for the storage type? Consult the unstorage documentation for more information"); throw new Error(`Driver ${runtimeConfig.storage.type} could not be imported, possible error: ${e1}, ${e2}`); } } const storage = createStorage({ driver }); storage.publishContent = async (content) => { console.log("Publishing content", content); }; storage.close = async () => { if (runtimeConfig.storage.type === "redis") { try { console.log("\x1B[42m\x1B[30m Katze \x1B[0m Closing Redis connection"); const redisDriver = driver; if (redisDriver.getInstance && typeof redisDriver.getInstance === "function") { const instance = redisDriver.getInstance(); if (instance && typeof instance.quit === "function") { await instance.quit(); console.log("\x1B[42m\x1B[30m Katze \x1B[0m Redis connection closed successfully"); } } } catch (err) { console.error("\x1B[41m\x1B[30m !Katze \x1B[0m Error closing Redis connection:", err); } } }; return storage; };