Skip to content

Commit f8b5c6b

Browse files
committed
providers, test + eslint
1 parent 6b4a5ab commit f8b5c6b

File tree

5 files changed

+63
-2
lines changed

5 files changed

+63
-2
lines changed

.eslintignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
node_modules/
2+
example/
23
test/
34
*.js
45
*.js.map

example/index.js

-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ const client = new GClient({
1818
],
1919
messagePrefix: '!',
2020
devGuildId: process.env.DEV_SERVER,
21-
cooldown: '30s',
2221
intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES],
2322
});
2423

src/lib/GClient.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {Client, ClientOptions} from 'discord.js';
2+
import {ProviderInterface} from './structures/Provider';
23
import {Plugins} from './managers/PluginManager';
34
import {Commands} from './managers/CommandManager';
45
import {Listeners} from './managers/ListenerManager';
@@ -16,6 +17,7 @@ export interface GClientOptions extends ClientOptions {
1617
messagePrefix?: string;
1718
unknownCommandMessage?: boolean;
1819
dirs?: Array<string>;
20+
database?: ProviderInterface | any;
1921
devGuildId?: string;
2022
}
2123

@@ -24,12 +26,13 @@ export interface GClientOptions extends ClientOptions {
2426
export class GClient<Ready extends boolean = boolean> extends Client<Ready> {
2527
public responses: Record<string, string> = Responses;
2628
public options: GClientOptions;
27-
public database?: any;
29+
public database?: ProviderInterface | any;
2830

2931
constructor(options: GClientOptions) {
3032
super(options);
3133

3234
if (options.dirs) registerDirectories(options.dirs);
35+
if (options.database) this.database = options.database;
3336

3437
setImmediate(async (): Promise<void> => {
3538
await Promise.all([

src/lib/structures/Provider.ts

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import Logger from 'js-logger';
2+
import {Util} from '../util/Util';
3+
4+
export interface ProviderInterface {
5+
init(): void;
6+
get(): Promise<any> | any;
7+
set(): Promise<any> | any;
8+
delete(): Promise<any> | any;
9+
}
10+
11+
const throwError = (error, name) => {
12+
const trace = Util.resolveValidationErrorTrace([
13+
name
14+
]);
15+
16+
Logger.error(error, trace);
17+
};
18+
19+
export class Provider implements ProviderInterface {
20+
init() {
21+
throwError('Init method is not implemented!', this.constructor.name);
22+
return;
23+
}
24+
25+
get() {
26+
throwError('Init method is not implemented!', this.constructor.name);
27+
return;
28+
}
29+
30+
set() {
31+
throwError('Init method is not implemented!', this.constructor.name);
32+
return;
33+
}
34+
35+
delete() {
36+
throwError('Init method is not implemented!', this.constructor.name);
37+
return;
38+
}
39+
}

src/providers/MongooseProvider.ts

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { Provider, ProviderInterface } from '../lib/structures/Provider';
2+
3+
export class MongooseProvider extends Provider implements ProviderInterface {
4+
init() {
5+
return 'test';
6+
}
7+
8+
async get() {
9+
return 'test';
10+
}
11+
12+
async set() {
13+
return 'test';
14+
}
15+
16+
async delete() {
17+
return 'test';
18+
}
19+
}

0 commit comments

Comments
 (0)