Database Plugin

discordjs-nextgen-db is a flexible, model-based database abstraction layer. It allows you to define models and perform CRUD operations across different databases like SQLite, MySQL, and MongoDB.

Installation

1npm i discordjs-nextgen-db

For SQLite support: npm i better-sqlite3

Setup

SQLite

1import { App } from 'discordjs-nextgen';
2import { DatabasePlugin, SQLiteAdapter } from 'discordjs-nextgen-db';
3
4const app = new App();
5
6app.use(new DatabasePlugin({
7 folder: './models', // Auto-load models from this folder
8 adapter: new SQLiteAdapter({ path: './database.sqlite' })
9}));

MySQL

1import { App } from 'discordjs-nextgen';
2import { DatabasePlugin, MySQLAdapter } from 'discordjs-nextgen-db';
3
4const app = new App();
5
6app.use(new DatabasePlugin({
7 folder: './models',
8 adapter: new MySQLAdapter({
9 host: 'localhost',
10 user: 'root',
11 password: 'password',
12 database: 'nextgen'
13 })
14}));

MongoDB / Mongoose

1import { App } from 'discordjs-nextgen';
2import { DatabasePlugin, MongooseAdapter } from 'discordjs-nextgen-db';
3
4const app = new App();
5
6app.use(new DatabasePlugin({
7 folder: './models',
8 adapter: new MongooseAdapter({
9 uri: 'mongodb://localhost:27017/nextgen'
10 })
11}));

Define Your Models

Create models/user.ts:

1export default (db) => {
2 db.define('user');
3};

CRUD Operations

1// Inside a command or event
2await ctx.db.user.create('burak', { coins: 100 });
3
4const user = await ctx.db.user.get('burak');
5
6await ctx.db.user.update('burak', { coins: user.coins + 50 });
7
8await ctx.db.user.delete('burak');

Auto-Loading Models

Use app.models() to automatically load model definitions from a directory.