Add MongoDB Database Adapter
This commit is contained in:
		
							parent
							
								
									a14ba766f7
								
							
						
					
					
						commit
						270c4391f1
					
				|  | @ -0,0 +1,8 @@ | |||
| [ | ||||
|     "xan.guilds", | ||||
|     "xan.userBans", | ||||
|     "xan.serverBans", | ||||
|     "xan.messages", | ||||
|     "xan.networkds", | ||||
|     "xan.server_prefs" | ||||
| ] | ||||
|  | @ -0,0 +1,73 @@ | |||
| const { MongoClient } = require('mongodb'); | ||||
| 
 | ||||
| /** | ||||
|  *  | ||||
|  * @param {MongoClient} client  | ||||
|  * @param {*} callback  | ||||
|  */ | ||||
| module.exports.initMongoDBInstance = async (client,config,callback) => { | ||||
|     const db = client.db(config.database_name); | ||||
| 
 | ||||
|     var call_data = { | ||||
|         createStore: async (name, callback) => { | ||||
|             db.createCollection(name).then(() => { | ||||
|                 callback(true); | ||||
|             }).catch(() => { | ||||
|                 callback(false); | ||||
|             }) | ||||
|         }, | ||||
| 
 | ||||
|         insert: async (table, data,callback) => { | ||||
|             var uuid = require('node:crypto').randomUUID(); | ||||
| 
 | ||||
|             var collection = db.collection(table); | ||||
| 
 | ||||
|             collection.insertOne({ | ||||
|                 uuid: uuid, | ||||
|                 ...data | ||||
|             }) | ||||
| 
 | ||||
|             callback(uuid) | ||||
|         }, | ||||
| 
 | ||||
|         delete: async (table, uuid , callback) => { | ||||
|             var collection = db.collection(table); | ||||
| 
 | ||||
|             collection.deleteOne({ uuid: uuid }); | ||||
| 
 | ||||
|             callback(true); | ||||
|         }, | ||||
| 
 | ||||
|         search: async (table, data , callback) => { | ||||
|             var collection = db.collection(table); | ||||
| 
 | ||||
|             var data = await collection.findOne(data); | ||||
| 
 | ||||
|             callback(data); | ||||
|         }, | ||||
| 
 | ||||
|         edit: async (table, uuid, data , callback) => { | ||||
|             var collection = db.collection(table); | ||||
| 
 | ||||
|             collection.updateOne({ | ||||
|                 uuid: uuid, | ||||
|             }, { | ||||
|                 $set: { | ||||
|                     uuid: uuid, | ||||
|                     ...data | ||||
|                 } | ||||
|             }) | ||||
| 
 | ||||
|             callback(true); | ||||
|         }, | ||||
| 
 | ||||
|         build: async () => { | ||||
|             var tables = require("./collection_tables.json"); | ||||
|             for(var table of tables){ | ||||
|                 call_data.createStore(table , (state) => {}); | ||||
|             } | ||||
|         } | ||||
|     }; | ||||
| 
 | ||||
|     callback(call_data); | ||||
| }; | ||||
|  | @ -0,0 +1 @@ | |||
| // [WIP]
 | ||||
|  | @ -11,6 +11,8 @@ | |||
|       "dependencies": { | ||||
|         "discord.js": "^14.14.1", | ||||
|         "dotenv": "^16.4.5", | ||||
|         "mongodb": "^6.4.0", | ||||
|         "mysql2": "^3.9.2", | ||||
|         "nodemon": "^3.1.0" | ||||
|       } | ||||
|     }, | ||||
|  | @ -120,6 +122,14 @@ | |||
|         "node": ">=14" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@mongodb-js/saslprep": { | ||||
|       "version": "1.1.4", | ||||
|       "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.4.tgz", | ||||
|       "integrity": "sha512-8zJ8N1x51xo9hwPh6AWnKdLGEC5N3lDa6kms1YHmFBoRhTpJR6HG8wWk0td1MVCu9cD4YBrvjZEtd5Obw0Fbnw==", | ||||
|       "dependencies": { | ||||
|         "sparse-bitfield": "^3.0.3" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@sapphire/async-queue": { | ||||
|       "version": "1.5.2", | ||||
|       "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.2.tgz", | ||||
|  | @ -158,6 +168,19 @@ | |||
|         "undici-types": "~5.26.4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@types/webidl-conversions": { | ||||
|       "version": "7.0.3", | ||||
|       "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", | ||||
|       "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" | ||||
|     }, | ||||
|     "node_modules/@types/whatwg-url": { | ||||
|       "version": "11.0.4", | ||||
|       "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.4.tgz", | ||||
|       "integrity": "sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==", | ||||
|       "dependencies": { | ||||
|         "@types/webidl-conversions": "*" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@types/ws": { | ||||
|       "version": "8.5.9", | ||||
|       "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.9.tgz", | ||||
|  | @ -225,6 +248,14 @@ | |||
|         "node": ">=8" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/bson": { | ||||
|       "version": "6.4.0", | ||||
|       "resolved": "https://registry.npmjs.org/bson/-/bson-6.4.0.tgz", | ||||
|       "integrity": "sha512-6/gSSEdbkuFlSb+ufj5jUSU4+wo8xQOwm2bDSqwmxiPE17JTpsP63eAwoN8iF8Oy4gJYj+PAL3zdRCTdaw5Y1g==", | ||||
|       "engines": { | ||||
|         "node": ">=16.20.1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/chokidar": { | ||||
|       "version": "3.6.0", | ||||
|       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", | ||||
|  | @ -269,6 +300,14 @@ | |||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/denque": { | ||||
|       "version": "2.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", | ||||
|       "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", | ||||
|       "engines": { | ||||
|         "node": ">=0.10" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/discord-api-types": { | ||||
|       "version": "0.37.61", | ||||
|       "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.61.tgz", | ||||
|  | @ -338,6 +377,14 @@ | |||
|         "node": "^8.16.0 || ^10.6.0 || >=11.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/generate-function": { | ||||
|       "version": "2.3.1", | ||||
|       "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", | ||||
|       "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", | ||||
|       "dependencies": { | ||||
|         "is-property": "^1.0.2" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/glob-parent": { | ||||
|       "version": "5.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", | ||||
|  | @ -357,6 +404,17 @@ | |||
|         "node": ">=4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/iconv-lite": { | ||||
|       "version": "0.6.3", | ||||
|       "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", | ||||
|       "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", | ||||
|       "dependencies": { | ||||
|         "safer-buffer": ">= 2.1.2 < 3.0.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=0.10.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/ignore-by-default": { | ||||
|       "version": "1.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", | ||||
|  | @ -400,6 +458,11 @@ | |||
|         "node": ">=0.12.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/is-property": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", | ||||
|       "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" | ||||
|     }, | ||||
|     "node_modules/lodash": { | ||||
|       "version": "4.17.21", | ||||
|       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", | ||||
|  | @ -410,6 +473,11 @@ | |||
|       "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", | ||||
|       "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" | ||||
|     }, | ||||
|     "node_modules/long": { | ||||
|       "version": "5.2.3", | ||||
|       "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", | ||||
|       "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" | ||||
|     }, | ||||
|     "node_modules/lru-cache": { | ||||
|       "version": "6.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", | ||||
|  | @ -426,6 +494,11 @@ | |||
|       "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.10.0.tgz", | ||||
|       "integrity": "sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ==" | ||||
|     }, | ||||
|     "node_modules/memory-pager": { | ||||
|       "version": "1.5.0", | ||||
|       "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", | ||||
|       "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==" | ||||
|     }, | ||||
|     "node_modules/minimatch": { | ||||
|       "version": "3.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", | ||||
|  | @ -437,11 +510,110 @@ | |||
|         "node": "*" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/mongodb": { | ||||
|       "version": "6.4.0", | ||||
|       "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.4.0.tgz", | ||||
|       "integrity": "sha512-MdFHsyb1a/Ee0H3NmzWTSLqchacDV/APF0H6BNQvraWrOiIocys2EmTFZPgHxWhcfO94c1F34I9MACU7x0hHKA==", | ||||
|       "dependencies": { | ||||
|         "@mongodb-js/saslprep": "^1.1.0", | ||||
|         "bson": "^6.4.0", | ||||
|         "mongodb-connection-string-url": "^3.0.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=16.20.1" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "@aws-sdk/credential-providers": "^3.188.0", | ||||
|         "@mongodb-js/zstd": "^1.1.0", | ||||
|         "gcp-metadata": "^5.2.0", | ||||
|         "kerberos": "^2.0.1", | ||||
|         "mongodb-client-encryption": ">=6.0.0 <7", | ||||
|         "snappy": "^7.2.2", | ||||
|         "socks": "^2.7.1" | ||||
|       }, | ||||
|       "peerDependenciesMeta": { | ||||
|         "@aws-sdk/credential-providers": { | ||||
|           "optional": true | ||||
|         }, | ||||
|         "@mongodb-js/zstd": { | ||||
|           "optional": true | ||||
|         }, | ||||
|         "gcp-metadata": { | ||||
|           "optional": true | ||||
|         }, | ||||
|         "kerberos": { | ||||
|           "optional": true | ||||
|         }, | ||||
|         "mongodb-client-encryption": { | ||||
|           "optional": true | ||||
|         }, | ||||
|         "snappy": { | ||||
|           "optional": true | ||||
|         }, | ||||
|         "socks": { | ||||
|           "optional": true | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/mongodb-connection-string-url": { | ||||
|       "version": "3.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.0.tgz", | ||||
|       "integrity": "sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==", | ||||
|       "dependencies": { | ||||
|         "@types/whatwg-url": "^11.0.2", | ||||
|         "whatwg-url": "^13.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/ms": { | ||||
|       "version": "2.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", | ||||
|       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" | ||||
|     }, | ||||
|     "node_modules/mysql2": { | ||||
|       "version": "3.9.2", | ||||
|       "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.2.tgz", | ||||
|       "integrity": "sha512-3Cwg/UuRkAv/wm6RhtPE5L7JlPB877vwSF6gfLAS68H+zhH+u5oa3AieqEd0D0/kC3W7qIhYbH419f7O9i/5nw==", | ||||
|       "dependencies": { | ||||
|         "denque": "^2.1.0", | ||||
|         "generate-function": "^2.3.1", | ||||
|         "iconv-lite": "^0.6.3", | ||||
|         "long": "^5.2.1", | ||||
|         "lru-cache": "^8.0.0", | ||||
|         "named-placeholders": "^1.1.3", | ||||
|         "seq-queue": "^0.0.5", | ||||
|         "sqlstring": "^2.3.2" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 8.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/mysql2/node_modules/lru-cache": { | ||||
|       "version": "8.0.5", | ||||
|       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", | ||||
|       "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", | ||||
|       "engines": { | ||||
|         "node": ">=16.14" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/named-placeholders": { | ||||
|       "version": "1.1.3", | ||||
|       "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", | ||||
|       "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", | ||||
|       "dependencies": { | ||||
|         "lru-cache": "^7.14.1" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=12.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/named-placeholders/node_modules/lru-cache": { | ||||
|       "version": "7.18.3", | ||||
|       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", | ||||
|       "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/nodemon": { | ||||
|       "version": "3.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.0.tgz", | ||||
|  | @ -507,6 +679,14 @@ | |||
|       "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", | ||||
|       "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" | ||||
|     }, | ||||
|     "node_modules/punycode": { | ||||
|       "version": "2.3.1", | ||||
|       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", | ||||
|       "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", | ||||
|       "engines": { | ||||
|         "node": ">=6" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/readdirp": { | ||||
|       "version": "3.6.0", | ||||
|       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", | ||||
|  | @ -518,6 +698,11 @@ | |||
|         "node": ">=8.10.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/safer-buffer": { | ||||
|       "version": "2.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", | ||||
|       "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" | ||||
|     }, | ||||
|     "node_modules/semver": { | ||||
|       "version": "7.6.0", | ||||
|       "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", | ||||
|  | @ -532,6 +717,11 @@ | |||
|         "node": ">=10" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/seq-queue": { | ||||
|       "version": "0.0.5", | ||||
|       "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", | ||||
|       "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" | ||||
|     }, | ||||
|     "node_modules/simple-update-notifier": { | ||||
|       "version": "2.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", | ||||
|  | @ -543,6 +733,22 @@ | |||
|         "node": ">=10" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/sparse-bitfield": { | ||||
|       "version": "3.0.3", | ||||
|       "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", | ||||
|       "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", | ||||
|       "dependencies": { | ||||
|         "memory-pager": "^1.0.2" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/sqlstring": { | ||||
|       "version": "2.3.3", | ||||
|       "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", | ||||
|       "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", | ||||
|       "engines": { | ||||
|         "node": ">= 0.6" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/supports-color": { | ||||
|       "version": "5.5.0", | ||||
|       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", | ||||
|  | @ -576,6 +782,17 @@ | |||
|         "nodetouch": "bin/nodetouch.js" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/tr46": { | ||||
|       "version": "4.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", | ||||
|       "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", | ||||
|       "dependencies": { | ||||
|         "punycode": "^2.3.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=14" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/ts-mixer": { | ||||
|       "version": "6.0.4", | ||||
|       "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz", | ||||
|  | @ -607,6 +824,26 @@ | |||
|       "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", | ||||
|       "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" | ||||
|     }, | ||||
|     "node_modules/webidl-conversions": { | ||||
|       "version": "7.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", | ||||
|       "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/whatwg-url": { | ||||
|       "version": "13.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", | ||||
|       "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", | ||||
|       "dependencies": { | ||||
|         "tr46": "^4.1.1", | ||||
|         "webidl-conversions": "^7.0.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=16" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/ws": { | ||||
|       "version": "8.14.2", | ||||
|       "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", | ||||
|  |  | |||
|  | @ -16,6 +16,8 @@ | |||
|   "dependencies": { | ||||
|     "discord.js": "^14.14.1", | ||||
|     "dotenv": "^16.4.5", | ||||
|     "mongodb": "^6.4.0", | ||||
|     "mysql2": "^3.9.2", | ||||
|     "nodemon": "^3.1.0" | ||||
|   } | ||||
| } | ||||
|  |  | |||
|  | @ -5,5 +5,16 @@ module.exports = { | |||
|     // Discord Bot Client Id **It's not recommend to put it here**,
 | ||||
|     discord_client_id: process.env['discord_client_id'] || "", | ||||
|     // Discord Bot Client Id **It's not recommend to put it here**,
 | ||||
|     discord_client_secret: process.env['discord_client_secret'] || "" | ||||
|     discord_client_secret: process.env['discord_client_secret'] || "", | ||||
| 
 | ||||
|     // Database Configurations
 | ||||
|     // Possible Options ["mongod" , "mysqld"]
 | ||||
|     database_adapter: "mongod", | ||||
|     // If using MongoDB
 | ||||
|     database_uri: process.env['database_uri'] || "", | ||||
|     database_name: "xantic", | ||||
|     // If using MySQL
 | ||||
|     database_host: "localhost", | ||||
|     database_user: "root", | ||||
|     datbase_password: process.env['database_password'] || "" | ||||
| } | ||||
							
								
								
									
										24
									
								
								src/index.js
								
								
								
								
							
							
						
						
									
										24
									
								
								src/index.js
								
								
								
								
							|  | @ -3,6 +3,7 @@ require("dotenv").config(); | |||
| const config = require("./config/prod"); | ||||
| const fs = require('node:fs'); | ||||
| const path = require('node:path'); | ||||
| const { MongoClient } = require("mongodb"); | ||||
| const { Client, Events, GatewayIntentBits, Collection } = require('discord.js'); | ||||
| 
 | ||||
| const client = new Client({ intents: [ | ||||
|  | @ -12,14 +13,33 @@ const client = new Client({ intents: [ | |||
|     GatewayIntentBits.MessageContent | ||||
| ] }); | ||||
| 
 | ||||
| async function main(){ | ||||
| 	if(config.database_adapter == "mongod"){ | ||||
| 		const mongo_client = new MongoClient(config.database_uri); | ||||
| 
 | ||||
| 		await mongo_client.connect(); | ||||
| 		console.log("Using MongoDB Connection for Database"); | ||||
| 
 | ||||
| 		require("../database/mongod").initMongoDBInstance(mongo_client, config , (back) => initMessageManager(back)); | ||||
| 	}else if(config.database_adapter == "mysqld"){ | ||||
| 	 | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| async function initMessageManager(database){ | ||||
| 	database.build(); | ||||
| } | ||||
| 
 | ||||
| client.commands = new Collection(); | ||||
| 
 | ||||
| client.once(Events.ClientReady, readyClient => { | ||||
| 	console.log(`Ready! Logged in as ${readyClient.user.tag}`); | ||||
| 
 | ||||
| 	main(); | ||||
| 
 | ||||
|     client.user.setActivity({ | ||||
|         name: `crossMessage on ${client.guilds.cache.size.toString()}`, | ||||
|         state: "idle" | ||||
|         name: `Minecraft`, | ||||
|         state: "2.0" | ||||
|     }); | ||||
| }); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue