UNPKG

@oberoncms/plugin-pgsql

Version:

A PostgreSQL database plugin for OberonCMS

88 lines (87 loc) 2.89 kB
import { eq } from "drizzle-orm"; import { users } from "./schema/next-auth-schema.js"; import { pages } from "./schema/puck-schema.js"; import { images } from "./schema/image-schema.js"; import { site } from "./schema/site-schema.js"; import { getAuthAdapter } from "./auth-adapter.js"; const getDatabaseAdapter = (db) => ({ getSite: async () => { const result = await db.select({ version: site.version, components: site.components, updatedAt: site.updatedAt, updatedBy: site.updatedBy }).from(site).where(eq(site.id, 1)).execute(); return result[0]; }, updateSite: async ({ version, components, updatedAt, updatedBy }) => { await db.insert(site).values({ id: 1, version, components, updatedAt, updatedBy }).onConflictDoUpdate({ target: site.id, set: { version, components, updatedAt, updatedBy } }).execute(); }, getAllUsers: async () => { return await db.select({ id: users.id, email: users.email, role: users.role }).from(users).execute(); }, addUser: async ({ email, role }) => { return await getAuthAdapter(db).createUser({ email, role, emailVerified: null }); }, deleteUser: async (id) => { var _a, _b; await ((_b = (_a = getAuthAdapter(db)).deleteUser) == null ? void 0 : _b.call(_a, id)); }, changeRole: async ({ role, id }) => { await db.update(users).set({ role }).where(eq(users.id, id)).execute(); }, addImage: async (image) => { await db.insert(images).values(image).execute(); }, deleteImage: async (key) => { await db.delete(images).where(eq(images.key, key)).execute(); }, getAllImages: async () => { return await db.select({ key: images.key, alt: images.alt, url: images.url, size: images.size, height: images.height, width: images.width, updatedAt: images.updatedAt, updatedBy: images.updatedBy }).from(images).execute(); }, addPage: async ({ key, data, updatedAt, updatedBy }) => { await db.insert(pages).values({ key, data, updatedAt, updatedBy }).execute(); }, deletePage: async (key) => { await db.delete(pages).where(eq(pages.key, key)).execute(); }, getPageData: async (key) => { var _a; const result = await db.select({ data: pages.data }).from(pages).where(eq(pages.key, key)).execute(); return ((_a = result[0]) == null ? void 0 : _a.data) || null; }, updatePageData: async ({ key, data, updatedAt, updatedBy }) => { await db.insert(pages).values({ key, data, updatedAt, updatedBy }).onConflictDoUpdate({ target: pages.key, set: { data, updatedAt, updatedBy } }).execute(); }, getAllPages: async () => { return await db.select({ key: pages.key, updatedAt: pages.updatedAt, updatedBy: pages.updatedBy }).from(pages).execute(); } }); export { getDatabaseAdapter };