forked from Galactic/galactic-bot
DiscordWebhook transport & storage barebones
This commit is contained in:
parent
a438ad07e5
commit
ccc86744ea
2
.gitignore
vendored
2
.gitignore
vendored
@ -3,4 +3,4 @@ node_modules
|
|||||||
.vscode
|
.vscode
|
||||||
yarn-error.log
|
yarn-error.log
|
||||||
.eslintrc.json
|
.eslintrc.json
|
||||||
logs/what.log
|
logs/*
|
@ -16,9 +16,17 @@ class Manager extends EventEmitter {
|
|||||||
.initialize();
|
.initialize();
|
||||||
|
|
||||||
this._built = false;
|
this._built = false;
|
||||||
|
|
||||||
|
this.shardManager.on('message', this._handleMessage.bind(this));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_handleMessage(shard, message) {
|
||||||
|
if(message._logger) return this.logger._handleMessage(shard, message);
|
||||||
|
if(message._storage) return this.storageManager._handleStorageRequest(shard, message);
|
||||||
|
if(message._webhook) return undefined; //todo
|
||||||
|
}
|
||||||
|
|
||||||
async build() {
|
async build() {
|
||||||
|
|
||||||
await this.shardManager.spawn();
|
await this.shardManager.spawn();
|
||||||
|
@ -1 +0,0 @@
|
|||||||
|
|
@ -1,91 +0,0 @@
|
|||||||
|
|
||||||
debug: [04-14-2020 12:17:25][manager] : Initializing storage providers.
|
|
||||||
debug: [04-14-2020 12:17:25][shard00] : Shard created.
|
|
||||||
info: [04-14-2020 12:17:25][shard00] : Component module:utility was loaded.
|
|
||||||
info: [04-14-2020 12:17:25][shard00] : Component command:ping was loaded.
|
|
||||||
info: [04-14-2020 12:17:25][shard00] : Component observer:commandHandler was loaded.
|
|
||||||
debug: [04-14-2020 12:17:25][shard01] : Shard created.
|
|
||||||
info: [04-14-2020 12:17:25][shard00] : Client connected to asfasf#1551 with 1 guild.
|
|
||||||
debug: [04-14-2020 12:20:34][manager] : Initializing storage providers.
|
|
||||||
debug: [04-14-2020 12:20:34][shard00] : Shard created.
|
|
||||||
info: [04-14-2020 12:20:35][shard00] : Component module:utility was loaded.
|
|
||||||
info: [04-14-2020 12:20:35][shard00] : Component command:ping was loaded.
|
|
||||||
info: [04-14-2020 12:20:35][shard00] : Component observer:commandHandler was loaded.
|
|
||||||
info: [04-14-2020 12:20:35][shard00] : Client connected to asfasf#1551 with 1 guild.
|
|
||||||
debug: [04-14-2020 12:23:19][manager] : Initializing storage providers.
|
|
||||||
debug: [04-14-2020 12:23:19][shard00] : Shard created.
|
|
||||||
info: [04-14-2020 12:23:20][shard00] : Component module:utility was loaded.
|
|
||||||
info: [04-14-2020 12:23:20][shard00] : Component command:ping was loaded.
|
|
||||||
info: [04-14-2020 12:23:20][shard00] : Component observer:commandHandler was loaded.
|
|
||||||
warn: [04-14-2020 12:23:20][shard00] : Attempted to load an invalid class.
|
|
||||||
info: [04-14-2020 12:23:20][shard00] : Client connected to asfasf#1551 with 1 guild.
|
|
||||||
debug: [04-14-2020 12:23:42][manager] : Initializing storage providers.
|
|
||||||
debug: [04-14-2020 12:23:42][shard00] : Shard created.
|
|
||||||
info: [04-14-2020 12:23:42][shard00] : Component module:utility was loaded.
|
|
||||||
info: [04-14-2020 12:23:42][shard00] : Component command:ping was loaded.
|
|
||||||
info: [04-14-2020 12:23:43][shard00] : Component observer:commandHandler was loaded.
|
|
||||||
warn: [04-14-2020 12:23:43][shard00] : Attempted to load an invalid class.
|
|
||||||
info: [04-14-2020 12:23:43][shard00] : Client connected to asfasf#1551 with 1 guild.
|
|
||||||
debug: [04-14-2020 12:24:01][manager] : Initializing storage providers.
|
|
||||||
debug: [04-14-2020 12:24:01][shard00] : Shard created.
|
|
||||||
info: [04-14-2020 12:24:02][shard00] : Component module:utility was loaded.
|
|
||||||
info: [04-14-2020 12:24:02][shard00] : Component command:ping was loaded.
|
|
||||||
info: [04-14-2020 12:24:02][shard00] : Component observer:commandHandler was loaded.
|
|
||||||
warn: [04-14-2020 12:24:02][shard00] : Attempted to load an invalid class.
|
|
||||||
info: [04-14-2020 12:24:02][shard00] : Client connected to asfasf#1551 with 1 guild.
|
|
||||||
debug: [04-14-2020 12:24:33][manager] : Initializing storage providers.
|
|
||||||
debug: [04-14-2020 12:24:33][shard00] : Shard created.
|
|
||||||
info: [04-14-2020 12:24:34][shard00] : Component module:utility was loaded.
|
|
||||||
info: [04-14-2020 12:24:34][shard00] : Component command:ping was loaded.
|
|
||||||
info: [04-14-2020 12:24:34][shard00] : Component observer:commandHandler was loaded.
|
|
||||||
warn: [04-14-2020 12:24:34][shard00] : Attempted to load an invalid class.
|
|
||||||
info: [04-14-2020 12:24:34][shard00] : Client connected to asfasf#1551 with 1 guild.
|
|
||||||
debug: [04-14-2020 12:24:51][manager] : Initializing storage providers.
|
|
||||||
debug: [04-14-2020 12:24:52][shard00] : Shard created.
|
|
||||||
info: [04-14-2020 12:24:52][shard00] : Component module:utility was loaded.
|
|
||||||
info: [04-14-2020 12:24:52][shard00] : Component command:ping was loaded.
|
|
||||||
info: [04-14-2020 12:24:52][shard00] : Component observer:commandHandler was loaded.
|
|
||||||
warn: [04-14-2020 12:24:52][shard00] : Attempted to load an invalid class.
|
|
||||||
info: [04-14-2020 12:24:52][shard00] : Client connected to asfasf#1551 with 1 guild.
|
|
||||||
debug: [04-14-2020 12:25:21][manager] : Initializing storage providers.
|
|
||||||
debug: [04-14-2020 12:25:21][shard00] : Shard created.
|
|
||||||
info: [04-14-2020 12:25:22][shard00] : Component module:utility was loaded.
|
|
||||||
info: [04-14-2020 12:25:22][shard00] : Component command:ping was loaded.
|
|
||||||
info: [04-14-2020 12:25:22][shard00] : Component observer:commandHandler was loaded.
|
|
||||||
warn: [04-14-2020 12:25:22][shard00] : Attempted to load an invalid class: "What".
|
|
||||||
info: [04-14-2020 12:25:22][shard00] : Client connected to asfasf#1551 with 1 guild.
|
|
||||||
debug: [04-14-2020 12:26:11][manager] : Initializing storage providers.
|
|
||||||
debug: [04-14-2020 12:26:12][shard00] : Shard created.
|
|
||||||
debug: [04-14-2020 12:26:23][manager] : Initializing storage providers.
|
|
||||||
debug: [04-14-2020 12:26:23][shard00] : Shard created.
|
|
||||||
info: [04-14-2020 12:26:24][shard00] : Component module:utility was loaded.
|
|
||||||
info: [04-14-2020 12:26:24][shard00] : Component command:ping was loaded.
|
|
||||||
info: [04-14-2020 12:26:24][shard00] : Component observer:commandHandler was loaded.
|
|
||||||
warn: [04-14-2020 12:26:24][shard00] : Attempted to load an invalid class: "What".
|
|
||||||
info: [04-14-2020 12:26:24][shard00] : Client connected to asfasf#1551 with 1 guild.
|
|
||||||
debug: [04-14-2020 12:26:53][manager] : Initializing storage providers.
|
|
||||||
debug: [04-14-2020 12:26:53][shard00] : Shard created.
|
|
||||||
debug: [04-14-2020 12:26:55][manager] : Initializing storage providers.
|
|
||||||
debug: [04-14-2020 12:26:55][shard00] : Shard created.
|
|
||||||
debug: [04-14-2020 12:26:57][manager] : Initializing storage providers.
|
|
||||||
debug: [04-14-2020 12:27:35][manager] : Initializing storage providers.
|
|
||||||
debug: [04-14-2020 12:27:36][shard00] : Shard created.
|
|
||||||
info: [04-14-2020 12:27:36][shard00] : Component module:utility was loaded.
|
|
||||||
info: [04-14-2020 12:27:36][shard00] : Component command:ping was loaded.
|
|
||||||
info: [04-14-2020 12:27:37][shard00] : Component observer:commandHandler was loaded.
|
|
||||||
warn: [04-14-2020 12:27:37][shard00] : Attempted to load an invalid class.
|
|
||||||
info: [04-14-2020 12:27:37][shard00] : Client connected to asfasf#1551 with 1 guild.
|
|
||||||
debug: [04-14-2020 12:27:37][manager] : Initializing storage providers.
|
|
||||||
debug: [04-14-2020 12:39:31][manager] : Initializing storage providers.
|
|
||||||
debug: [04-14-2020 12:39:32][shard00] : Shard created.
|
|
||||||
info: [04-14-2020 12:39:32][shard00] : Component module:utility was loaded.
|
|
||||||
info: [04-14-2020 12:39:32][shard00] : Component command:ping was loaded.
|
|
||||||
info: [04-14-2020 12:39:32][shard00] : Component observer:commandHandler was loaded.
|
|
||||||
warn: [04-14-2020 12:39:32][shard00] : Attempted to load an invalid class.
|
|
||||||
info: [04-14-2020 12:39:32][shard00] : Client connected to asfasf#1551 with 1 guild.
|
|
||||||
debug: [04-14-2020 12:39:51][manager] : Initializing storage providers.
|
|
||||||
debug: [04-14-2020 12:39:51][shard00] : Shard created.
|
|
||||||
info: [04-14-2020 12:39:52][shard00] : Component module:utility was loaded.
|
|
||||||
info: [04-14-2020 12:39:52][shard00] : Component command:ping was loaded.
|
|
||||||
info: [04-14-2020 12:39:52][shard00] : Component observer:commandHandler was loaded.
|
|
||||||
info: [04-14-2020 12:39:52][shard00] : Client connected to asfasf#1551 with 1 guild.
|
|
@ -3,6 +3,8 @@ const { combine, label, printf } = format;
|
|||||||
const moment = require('moment');
|
const moment = require('moment');
|
||||||
const chalk = require('chalk');
|
const chalk = require('chalk');
|
||||||
|
|
||||||
|
const { stripIndents } = require('common-tags');
|
||||||
|
|
||||||
const { DiscordWebhook, FileExtension } = require('./transports/');
|
const { DiscordWebhook, FileExtension } = require('./transports/');
|
||||||
|
|
||||||
class Logger {
|
class Logger {
|
||||||
@ -16,19 +18,12 @@ class Logger {
|
|||||||
levels: config.npm.levels,
|
levels: config.npm.levels,
|
||||||
format: (
|
format: (
|
||||||
format.cli({
|
format.cli({
|
||||||
colors: {
|
colors: Constants.Colors
|
||||||
error: 'red',
|
|
||||||
warn: 'yellow',
|
|
||||||
info: 'blue',
|
|
||||||
verbose: 'cyan',
|
|
||||||
debug: 'magenta',
|
|
||||||
silly: 'magentaBright'
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
),
|
),
|
||||||
transports: [
|
transports: [
|
||||||
new FileExtension({ filename: `logs/what.log`, level: 'debug'}), //Will NOT log "silly" logs, could change in future.
|
new FileExtension({ filename: `logs/${this.date.split(' ')[0]}.log`, level: 'debug'}), //Will NOT log "silly" logs, could change in future.
|
||||||
new FileExtension({ filename: `logs/error.log` , level: 'error' }),
|
new FileExtension({ filename: `logs/errors/${this.date.split(' ')[0]}-error.log` , level: 'error' }),
|
||||||
new Console({ level: 'silly' }), //Will log EVERYTHING.
|
new Console({ level: 'silly' }), //Will log EVERYTHING.
|
||||||
new DiscordWebhook({ level: 'error' }) //Broadcast errors to a discord webhook.
|
new DiscordWebhook({ level: 'error' }) //Broadcast errors to a discord webhook.
|
||||||
]
|
]
|
||||||
@ -38,22 +33,6 @@ class Logger {
|
|||||||
|
|
||||||
this.shardManager
|
this.shardManager
|
||||||
.on('shardCreate', (shard) => this.write('debug', "Shard created.", shard))
|
.on('shardCreate', (shard) => this.write('debug', "Shard created.", shard))
|
||||||
.on('message', (shard, message) => this._handleMessage(shard, message));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//Messages coming from the shards process.send functions.
|
|
||||||
async _handleMessage(shard, message) {
|
|
||||||
if(message._ready
|
|
||||||
|| message._disconnect
|
|
||||||
|| message._reconnecting
|
|
||||||
|| message._sFetchProp
|
|
||||||
|| message._sEval
|
|
||||||
|| message._sRespawnAll
|
|
||||||
|| message._storage
|
|
||||||
|| message._webhook) return undefined; //Properties used for discord.js internal sharding & our own structures. must filter for.
|
|
||||||
|
|
||||||
this.write(message.type, message.message, shard);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,6 +46,13 @@ class Logger {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Messages coming from the shards process.send functions.
|
||||||
|
_handleMessage(shard, message) {
|
||||||
|
|
||||||
|
this.write(message.type, message.message, shard);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
_shardId(shard) {
|
_shardId(shard) {
|
||||||
const id = shard.id;
|
const id = shard.id;
|
||||||
return `${id}`.length === 1 ? `0${id}` : `${id}`;
|
return `${id}`.length === 1 ? `0${id}` : `${id}`;
|
||||||
@ -89,14 +75,4 @@ const Constants = {
|
|||||||
debug: 'magenta',
|
debug: 'magenta',
|
||||||
silly: 'magentaBright'
|
silly: 'magentaBright'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// const levels = {
|
|
||||||
// error: 0,
|
|
||||||
// warn: 1,
|
|
||||||
// info: 2,
|
|
||||||
// http: 3,
|
|
||||||
// verbose: 4,
|
|
||||||
// debug: 5,
|
|
||||||
// silly: 6
|
|
||||||
// };
|
|
@ -1,24 +1,47 @@
|
|||||||
const Transport = require('winston-transport');
|
const Transport = require('winston-transport');
|
||||||
|
const { WebhookClient } = require('discord.js');
|
||||||
|
const { username } = require('os').userInfo();
|
||||||
|
const { inspect } = require('util');
|
||||||
|
|
||||||
|
const options = require('../../../options.json');
|
||||||
|
|
||||||
|
const regex = /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g
|
||||||
|
|
||||||
class DiscordWebhook extends Transport {
|
class DiscordWebhook extends Transport {
|
||||||
constructor(opts) {
|
constructor(opts) {
|
||||||
super(opts);
|
super(opts);
|
||||||
//
|
|
||||||
// Consume any custom options here. e.g.:
|
|
||||||
// - Connection information for databases
|
|
||||||
// - Authentication information for APIs (e.g. loggly, papertrail,
|
|
||||||
// logentries, etc.).
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
log(info, callback) {
|
this.webhookClient = new WebhookClient(
|
||||||
setImmediate(() => {
|
options.logger.webhook.id,
|
||||||
this.emit('logged', info);
|
options.logger.webhook.token
|
||||||
});
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// Perform the writing to the remote service
|
log(info, callback) {
|
||||||
callback();
|
setImmediate(() => {
|
||||||
}
|
this.emit('logged', info);
|
||||||
|
});
|
||||||
|
|
||||||
|
const message = info.message.replace(regex, '')
|
||||||
|
.replace(new RegExp(options.bot.token, 'g'), '<redacted>')
|
||||||
|
.replace(new RegExp(username, 'g'), '<redacted>');
|
||||||
|
|
||||||
|
const developers = ['nolan', 'navy'];
|
||||||
|
const random = developers[Math.floor(Math.random()*developers.length)];
|
||||||
|
|
||||||
|
const embed = {
|
||||||
|
color: 0xe88388,
|
||||||
|
timestamp: new Date(),
|
||||||
|
description: `\`\`\`${message}\`\`\``,
|
||||||
|
footer: {
|
||||||
|
text: `probably ${random}'s fault`
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.webhookClient.send('', { embeds: [embed] });
|
||||||
|
|
||||||
|
callback();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = DiscordWebhook;
|
module.exports = DiscordWebhook;
|
@ -33,6 +33,33 @@ class StorageManager {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async _handleStorageRequest(shard, message) {
|
||||||
|
|
||||||
|
// vv TO BE GENERATED ON CLIENT vv
|
||||||
|
//`${shard.id}-${new Date().getTime().toString(36)
|
||||||
|
|
||||||
|
if(!message.provider) return this._send(shard, { error: true, message: "Provider not provided" });
|
||||||
|
if(!this.providers.has(message.provider)) return this._send(shard, { error: true, message: `Invalid provider, expected 'mongodb' or 'mariadb', got '${message.provider}'` });
|
||||||
|
if(!message.query) return this._send(shard, { error: true, message: `Missing query.` });
|
||||||
|
|
||||||
|
const response = await this.providers.get(message.provider)._query(message.query);
|
||||||
|
|
||||||
|
if(response.error) {
|
||||||
|
this.manager.logger.write('error', `Provider ${message.provider} errored: ${response.error.message}`, shard);
|
||||||
|
return this._send(shard, error);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
_send(shard, message) {
|
||||||
|
shard.send({
|
||||||
|
_storage: true,
|
||||||
|
id: message.id,
|
||||||
|
error: message.error,
|
||||||
|
message: message.message
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = StorageManager;
|
module.exports = StorageManager;
|
@ -21,11 +21,11 @@ class MongoDBProvider extends Provider {
|
|||||||
this.manager.db = await this.client.db(this.config.database);
|
this.manager.db = await this.client.db(this.config.database);
|
||||||
this.db = this.manager.db;
|
this.db = this.manager.db;
|
||||||
this.loaded = true;
|
this.loaded = true;
|
||||||
// this.manager.logger.print('Database connected.');
|
// this.manager.write('info', `Provider ${this.name} connected.`);
|
||||||
|
|
||||||
} catch(err) {
|
} catch(err) {
|
||||||
|
|
||||||
// this.manager.logger.error('Database connection failed!\n' + err);
|
// this.manager.write('error', `Provider ${this.name} failed to connect.` + err);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,23 +33,37 @@ class MongoDBProvider extends Provider {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_query(query) {
|
||||||
|
/*
|
||||||
|
{
|
||||||
|
type: '',
|
||||||
|
collection: '',
|
||||||
|
query: '',
|
||||||
|
data: {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
if(!this[query.type]) return { error: true, message: `Invalid query type, got '${query.type}'` };
|
||||||
|
return this[query.type](query);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find and return the first match
|
* Find and return the first match
|
||||||
*
|
|
||||||
* @param {String} db The collection in which the data is to be updated
|
|
||||||
* @param {Object} query The filter that is used to find the data
|
|
||||||
* @returns {Array} An array containing the corresponding objects for the query
|
|
||||||
* @memberof Database
|
* @memberof Database
|
||||||
*/
|
*/
|
||||||
|
|
||||||
find(db, query) {
|
find({ collection, query }) {
|
||||||
|
|
||||||
//if(this.manager.debug) this.manager.logger.debug(`Incoming find query for ${db} with parameters ${JSON.stringify(query)}`);
|
//if(this.manager.debug) this.manager.logger.debug(`Incoming find query for ${db} with parameters ${JSON.stringify(query)}`);
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
|
||||||
if(!this.loaded) reject(new Error('MongoDB not connected'));
|
if(!this.loaded) reject(new Error('MongoDB not connected'));
|
||||||
|
|
||||||
this.db.collection(db).find(query, async (error, cursor) => {
|
this.db.collection(collection).find(query, async (error, cursor) => {
|
||||||
|
|
||||||
if(error) return reject(error);
|
if(error) return reject(error);
|
||||||
return resolve(await cursor.toArray());
|
return resolve(await cursor.toArray());
|
||||||
@ -69,14 +83,14 @@ class MongoDBProvider extends Provider {
|
|||||||
* @memberof Database
|
* @memberof Database
|
||||||
*/
|
*/
|
||||||
|
|
||||||
findOne(db, query) {
|
findOne({ collection, query }) {
|
||||||
|
|
||||||
//if(this.manager.debug) this.manager.logger.debug(`Incoming findOne query for ${db} with parameters ${JSON.stringify(query)}`);
|
//if(this.manager.debug) this.manager.logger.debug(`Incoming findOne query for ${db} with parameters ${JSON.stringify(query)}`);
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
|
||||||
if(!this.loaded) reject(new Error('MongoDB not connected'));
|
if(!this.loaded) reject(new Error('MongoDB not connected'));
|
||||||
|
|
||||||
this.db.collection(db).findOne(query, async (error, item) => {
|
this.db.collection(collection).findOne(query, async (error, item) => {
|
||||||
|
|
||||||
if(error) return reject(error);
|
if(error) return reject(error);
|
||||||
return resolve(item);
|
return resolve(item);
|
||||||
@ -97,14 +111,14 @@ class MongoDBProvider extends Provider {
|
|||||||
* @returns {WriteResult} Object containing the followint counts: Matched, Upserted, Modified
|
* @returns {WriteResult} Object containing the followint counts: Matched, Upserted, Modified
|
||||||
* @memberof Database
|
* @memberof Database
|
||||||
*/
|
*/
|
||||||
updateOne(db, query, data, upsert = false) {
|
updateOne({ collection, query, data, upsert = false }) {
|
||||||
|
|
||||||
//if(this.manager.debug) this.manager.logger.debug(`Incoming updateOne query for ${db} with parameters ${JSON.stringify(filter)}`);
|
//if(this.manager.debug) this.manager.logger.debug(`Incoming updateOne query for ${db} with parameters ${JSON.stringify(filter)}`);
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
|
||||||
if(!this.loaded) reject(new Error('MongoDB not connected'));
|
if(!this.loaded) reject(new Error('MongoDB not connected'));
|
||||||
|
|
||||||
this.db.collection(db).updateOne(query, { $set: data }, { upsert: upsert }, async (error, result) => {
|
this.db.collection(collection).updateOne(query, { $set: data }, { upsert: upsert }, async (error, result) => {
|
||||||
|
|
||||||
if(error) return reject(error);
|
if(error) return reject(error);
|
||||||
else {
|
else {
|
||||||
@ -128,14 +142,14 @@ class MongoDBProvider extends Provider {
|
|||||||
* @returns
|
* @returns
|
||||||
* @memberof Database
|
* @memberof Database
|
||||||
*/
|
*/
|
||||||
push(db, query, data, upsert = false) {
|
push({ collection, query, data, upsert = false }) {
|
||||||
|
|
||||||
//if(this.manager.debug) this.manager.logger.debug(`Incoming push query for ${db}, with upsert ${upsert} and with parameters ${JSON.stringify(filter)} and data ${JSON.stringify(data)}`);
|
//if(this.manager.debug) this.manager.logger.debug(`Incoming push query for ${db}, with upsert ${upsert} and with parameters ${JSON.stringify(filter)} and data ${JSON.stringify(data)}`);
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
|
||||||
if(!this.loaded) reject(new Error('MongoDB not connected'));
|
if(!this.loaded) reject(new Error('MongoDB not connected'));
|
||||||
|
|
||||||
this.db.collection(db).updateOne(query, { $push: data }, { upsert: upsert }, async (error, result) => {
|
this.db.collection(collection).updateOne(query, { $push: data }, { upsert: upsert }, async (error, result) => {
|
||||||
|
|
||||||
if(error) return reject(error);
|
if(error) return reject(error);
|
||||||
else return resolve(result);
|
else return resolve(result);
|
||||||
@ -155,7 +169,7 @@ class MongoDBProvider extends Provider {
|
|||||||
* @returns {object}
|
* @returns {object}
|
||||||
* @memberof Database
|
* @memberof Database
|
||||||
*/
|
*/
|
||||||
random(db, query = {}, amount = 1) {
|
random({ collection, query = {}, amount = 1 }) {
|
||||||
|
|
||||||
//if(this.manager.debug) this.manager.logger.debug(`Incoming random query for ${db} with parameters ${JSON.stringify(filter)} and amount ${amount}`);
|
//if(this.manager.debug) this.manager.logger.debug(`Incoming random query for ${db} with parameters ${JSON.stringify(filter)} and amount ${amount}`);
|
||||||
if(amount > 100) amount = 100;
|
if(amount > 100) amount = 100;
|
||||||
@ -164,7 +178,7 @@ class MongoDBProvider extends Provider {
|
|||||||
|
|
||||||
if(!this.loaded) reject(new Error('MongoDB not connected'));
|
if(!this.loaded) reject(new Error('MongoDB not connected'));
|
||||||
|
|
||||||
this.db.collection(db).aggregate([{ $match: query }, { $sample: {size: amount}}], function(err, item) {
|
this.db.collection(collection).aggregate([{ $match: query }, { $sample: {size: amount}}], function(err, item) {
|
||||||
|
|
||||||
if(err) return reject(err);
|
if(err) return reject(err);
|
||||||
resolve(item);
|
resolve(item);
|
||||||
|
@ -22,7 +22,7 @@ class Logger {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async transport(message = 'N/A', opts = {}) {
|
async transport(message = 'N/A', opts = {}) {
|
||||||
process.send({ message, ...opts });
|
process.send({ _logger: true, message, ...opts });
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Quick & Dirty Functions */
|
/* Quick & Dirty Functions */
|
||||||
|
@ -135,7 +135,6 @@ class CommandHandler extends Observer {
|
|||||||
|
|
||||||
for(let i=0; i<args.length; i++) {
|
for(let i=0; i<args.length; i++) {
|
||||||
const word = args[i];
|
const word = args[i];
|
||||||
|
|
||||||
if(!word) continue;
|
if(!word) continue;
|
||||||
const [one,two,...chars] = word.split('');
|
const [one,two,...chars] = word.split('');
|
||||||
if(one === '-' && two !== '-') {
|
if(one === '-' && two !== '-') {
|
||||||
@ -163,7 +162,6 @@ class CommandHandler extends Observer {
|
|||||||
if(match && match[2]) {
|
if(match && match[2]) {
|
||||||
currentArgument = longFlags[match[2]];
|
currentArgument = longFlags[match[2]];
|
||||||
if(params.length > 0 && ['INTEGER', 'FLOAT'].includes(currentArgument.type)) { //15 pts
|
if(params.length > 0 && ['INTEGER', 'FLOAT'].includes(currentArgument.type)) { //15 pts
|
||||||
console.log("asgsaiughasiguassag")
|
|
||||||
const lastItem = params[params.length-1];
|
const lastItem = params[params.length-1];
|
||||||
const beforeError = await this._handleTypeParsing(currentArgument, lastItem);
|
const beforeError = await this._handleTypeParsing(currentArgument, lastItem);
|
||||||
if(beforeError) {
|
if(beforeError) {
|
||||||
@ -240,7 +238,6 @@ class CommandHandler extends Observer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user