Thanks to visit codestin.com
Credit goes to github.com

Skip to content

wirekang/adminjs-sql

Repository files navigation

adminjs-sql NPM version

This is an inofficial AdminJS adapter which integrates SQL-based database into AdminJS.

Installation: yarn add adminjs-sql

Usage

The plugin can be registered using standard AdminJS.registerAdapter method.

import { Adapter } from 'adminjs-sql';
import AdminJS from 'adminjs';

AdminJS.registerAdapter(Adapter);

After registration, you should call Adapter.database(client, connectionOptions) to parse table information from running database.

// import { Adapter } from 'adminjs-sql';
// ...
const db = await Adapter.database('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.

const adminJs = new AdminJS({
  databases: [database],
  resources: db.tables(),
  // or
  resources: [db.table('users'), db.table('posts'), db.table('comments')],
});

Example App

You can run example app with docker.

  1. Clone this repository.
git clone https://github.com/wirekang/adminjs-sql
yarn install
yarn build
  1. Setup example project.
cd example/
yarn install
  1. Run mysql:latest in docker container. Checkout docker-compose.yml
yarn up

  1. Run example app.
yarn start


# Generating samples...
# Inserting samples...
# adminjs-sql example app is under http://localhost:33300
  1. 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.

Supported Databases

  • MySQL
  • MariaDB

Todo

  • Support Postgres.

  • Add unit testing.

  • Add more complex example app.

Contributions are welcome!!