### This is an official [AdminJS](https://github.com/SoftwareBrothers/adminjs) adapter which integrates
Prisma into AdminJS.
Installation
$ yarn add @adminjs/prisma
or
$ npm install @adminjs/prisma
Usage
The plugin can be registered using standard AdminJS.registerAdapter
method.
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.
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.