/**
* @module @adminjs/prisma
* @subcategory Adapters
* @section modules
*
* @description
* ### This is an official [AdminJS](https://github.com/SoftwareBrothers/adminjs) adapter which integrates
* [Prisma](https://prisma.io/) into AdminJS.
*
* ### Installation
*
* ```bash
* $ yarn add @adminjs/prisma
* or
* $ npm install @adminjs/prisma
* ```
*
* ## Usage
*
* The plugin can be registered using standard `AdminJS.registerAdapter` method.
*
* ```typescript
* import { Database, Resource } from '@adminjs/prisma'
* import AdminJS from 'adminjs'
*
* AdminJS.registerAdapter({ Database, Resource })
* ```
*
* ## Example
*
* Whole code can be found in `example-app` directory in the repository.
*
* ```typescript
* import express from 'express'
* import AdminJS from 'adminjs'
* import AdminJSExpress from '@adminjs/express'
* import { Database, Resource } from '@adminjs/prisma'
* import { PrismaClient } from '@prisma/client'
* import { DMMFClass } from '@prisma/client/runtime'
*
* const PORT = process.env.port || 3000
*
* const prisma = new PrismaClient()
*
* AdminJS.registerAdapter({ Database, Resource })
*
* const run = async () => {
* const app = express()
*
* // `_dmmf` contains necessary Model metadata. `PrismaClient` type doesn't have it included
* const dmmf = ((prisma as any)._dmmf as DMMFClass)
*
* const admin = new AdminJS({
* resources: [{
* resource: { model: dmmf.modelMap.Post, client: prisma },
* options: {},
* }, {
* resource: { model: dmmf.modelMap.Profile, client: prisma },
* options: {},
* }, {
* resource: { model: dmmf.modelMap.User, client: prisma },
* options: {},
* }],
* })
*
* const router = AdminJSExpress.buildRouter(admin)
*
* app.use(admin.options.rootPath, router)
*
* app.listen(PORT, () => {
* console.log(`Example app listening at http://localhost:${PORT}`)
* })
* }
*
* run()
* .finally(async () => {
* await prisma.$disconnect()
* })
* ```
*
* ## ManyToOne / ManyToMany
*
* These relationships are currently not supported by default.
* You can manage them using custom actions and components.
*
*/
/**
* Implementation of {@link BaseDatabase} for Prisma Adapter
*
* @memberof module:@adminjs/prisma
* @type {typeof BaseDatabase}
* @static
*/
import { Database } from './Database';
/**
* Implementation of {@link BaseResource} for Prisma Adapter
*
* @memberof module:@adminjs/prisma
* @type {typeof BaseResource}
* @static
*/
import { Resource } from './Resource';
export { Resource } from './Resource';
export { Database } from './Database';
export { convertParam, convertFilter } from './utils/converters';
export default { Database, Resource };
Source