diff --git a/frontends/nextjs/src/components/ComponentCatalog.tsx b/frontends/nextjs/src/components/ComponentCatalog.tsx index f89f2dbb6..22677890d 100644 --- a/frontends/nextjs/src/components/ComponentCatalog.tsx +++ b/frontends/nextjs/src/components/ComponentCatalog.tsx @@ -1,4 +1,4 @@ -import { useState } from 'react' +import { useState, type ComponentType } from 'react' import { Box, Card, InputAdornment, Stack, TextField, Typography } from '@mui/material' import type { SvgIconProps } from '@mui/material' import CropFreeIcon from '@mui/icons-material/CropFree' @@ -26,7 +26,7 @@ import SearchIcon from '@mui/icons-material/Search' import { componentCatalog } from '@/lib/component-catalog' import type { ComponentDefinition } from '@/lib/builder-types' -const iconMap: Record> = { +const iconMap: Record> = { FrameCorners: CropFreeIcon, Columns: ViewColumnIcon, GridFour: GridViewIcon, diff --git a/frontends/nextjs/src/lib/db/dbal-client/close-adapter.ts b/frontends/nextjs/src/lib/db/dbal-client/close-adapter.ts new file mode 100644 index 000000000..d937a2c6f --- /dev/null +++ b/frontends/nextjs/src/lib/db/dbal-client/close-adapter.ts @@ -0,0 +1,8 @@ +import { prismaAdapter } from './create-prisma-adapter' + +/** + * Close the DBAL adapter connection + */ +export const closeAdapter = async (): Promise => { + await prismaAdapter.close() +} diff --git a/frontends/nextjs/src/lib/db/dbal-client/create-prisma-adapter.ts b/frontends/nextjs/src/lib/db/dbal-client/create-prisma-adapter.ts new file mode 100644 index 000000000..d1caeaf4a --- /dev/null +++ b/frontends/nextjs/src/lib/db/dbal-client/create-prisma-adapter.ts @@ -0,0 +1,23 @@ +import type { DBALAdapter } from './types' +import { closeConnection } from './close-connection' +import { createEntity } from './create-entity' +import { deleteEntity } from './delete-entity' +import { findFirstEntity } from './find-first-entity' +import { listEntities } from './list-entities' +import { readEntity } from './read-entity' +import { updateEntity } from './update-entity' +import { upsertEntity } from './upsert-entity' + +/** + * DBAL Adapter implementation using Prisma + */ +export const prismaAdapter: DBALAdapter = { + create: createEntity, + read: readEntity, + update: updateEntity, + delete: deleteEntity, + list: listEntities, + findFirst: findFirstEntity, + upsert: upsertEntity, + close: closeConnection, +} diff --git a/frontends/nextjs/src/lib/db/dbal-client/get-adapter.ts b/frontends/nextjs/src/lib/db/dbal-client/get-adapter.ts new file mode 100644 index 000000000..75ed156dd --- /dev/null +++ b/frontends/nextjs/src/lib/db/dbal-client/get-adapter.ts @@ -0,0 +1,9 @@ +import type { DBALAdapter } from './types' +import { prismaAdapter } from './create-prisma-adapter' + +/** + * Get the DBAL adapter singleton for database operations + */ +export const getAdapter = (): DBALAdapter => { + return prismaAdapter +}