Raw SQL adapter for AdminJS without ORM
npm install adminjs-sqlThis is an inofficial AdminJS adapter which integrates SQL-based database into AdminJS.
Installation: yarn add adminjs-sql
The plugin can be registered using standard AdminJS.registerAdapter method.
``typescript
import { Adapter } from 'adminjs-sql';
import AdminJS from 'adminjs';
AdminJS.registerAdapter(Adapter);
`
After registration, you should call Adapter.init(client, connectionOptions) to parse table information from running database.
`typescript`
// import { Adapter } from 'adminjs-sql';
// ...
const db = await Adapter.init('mysql2', {
host: DB_HOST,
port: DB_PORT,
user: DB_USER,
password: DB_PASSWORD,
database: DB_NAME,
});
After initialization, you can register resources. db.tables() to register ALL tables in database. Or you can db.table(tableName) to register specific table.
`typescript`
const adminJs = new AdminJS({
databases: [database],
resources: db.tables(),
// or
resources: [db.table('users'), db.table('posts'), db.table('comments')],
});
This supports ManyToOne relationship if you define a foreign key.
You can run example app with docker.
1. Clone this repository.
``
git clone https://github.com/wirekang/adminjs-sql
yarn install
yarn build
2. Setup example project.
``
cd example/
yarn install
3. Run mysql:latest in docker container. Checkout docker-compose.yml
`
yarn up
`
4. Run example app.
`
yarn start
5. After enjoying the example, you can clean down MySQL server.
`
yarn down
`How It Works
adminjs-sql collects information about tables and columns from INFORMATION_SCHEMA and converts to adminjs`. This project uses Knex Query Builder to generate SQL string.- MySQL
- MariaDB
- [ ] Support Postgres.
- [ ] Add unit testing.
- [ ] Add more complex example app.
Contributions are welcome!!