discordjs-giveaways
Version:
A customisable giveaways manager for Discord.js v14 and mysql
43 lines (42 loc) • 1.46 kB
TypeScript
import EasyJsonDB from 'easy-json-database';
import { Connection } from 'mysql';
import { Sequelize } from 'sequelize';
import mongoose from 'mongoose';
export type databaseMode = 'json' | 'mysql' | 'sequelize' | 'mongodb';
export type MySQLDatabase = {
mode: 'mysql';
connection: Connection;
};
export type JSONDatabase = {
mode: 'json';
path: `./${string}`;
file: EasyJsonDB;
};
export type SequelizeDatabase = {
mode: 'sequelize';
sequelize: Sequelize;
tableName: string;
};
export type MongoDBDatabase = {
mode: 'mongodb';
connection: mongoose.Connection;
modelName: string;
};
export type databaseOptionsSequelize = {
sequelize: Sequelize;
tableName: string;
};
export type databaseOptionsMySQL = {
connection: Connection;
};
export type databaseOptionsJSON = {
path: `./${string}`;
};
export type databaseOptionsMongoDB = {
connection: mongoose.Connection;
modelName: string;
};
export type databaseOptions<Mode extends databaseMode> = {
mode: Mode;
} & (Mode extends 'json' ? databaseOptionsJSON : Mode extends 'mysql' ? databaseOptionsMySQL : Mode extends 'sequelize' ? databaseOptionsSequelize : Mode extends 'mongodb' ? databaseOptionsMongoDB : {});
export type Database<Mode extends databaseMode> = Mode extends 'json' ? JSONDatabase : Mode extends 'mysql' ? MySQLDatabase : Mode extends 'sequelize' ? SequelizeDatabase : Mode extends 'mongodb' ? MongoDBDatabase : never;