mongoose.js (9201B)
1 const mongoose = require("mongoose"); 2 const { GooseCache } = require("goosecache"); 3 const cachegoose = new GooseCache(mongoose, { 4 engine: "memory", 5 }); 6 mongoose.set("useFindAndModify", false); 7 const u = require("../../models/users"); 8 const g = require("../../models/guilds"); 9 module.exports = { 10 /** 11 * @param {String} URI - Mongo Connection URI 12 */ 13 async connect(URI) { 14 if (!URI) throw new Error("Please provide a Mongoose URI"); 15 return mongoose.connect(URI, { 16 useNewUrlParser: true, 17 useUnifiedTopology: true, 18 }); 19 }, 20 /** 21 * @param {String} ID - Guild ID 22 */ 23 async getGuild(ID) { 24 if (!ID) throw new Error("Guild ID?"); 25 const guild = await g.findOne({ Guild: ID }).lean().cache(120); 26 if (!guild) { 27 const gg = new g({ Guild: ID }); 28 const { Guild, Prefix, Premium, Category, Commands, Tips } = gg; 29 await gg.save().catch(error => console.log(error)); 30 return { 31 Guild, 32 Prefix, 33 Premium, 34 Category, 35 Commands, 36 Tips, 37 }; 38 } else { 39 const Guild = guild.Guild; 40 const Prefix = guild.Prefix; 41 const Premium = guild.Premium; 42 const Category = guild.Category; 43 const Commands = guild.Commands; 44 const Tips = guild.Tips; 45 return { 46 Guild, 47 Prefix, 48 Premium, 49 Category, 50 Commands, 51 Tips, 52 }; 53 } 54 }, 55 /** 56 * @param {String} ID - User ID 57 */ 58 async getUser(ID) { 59 if (!ID) throw new Error("User ID?"); 60 const user = await u.findOne({ User: ID }).lean().cache(120); 61 if (!user) { 62 const ss = new u({ User: ID }); 63 const { 64 User, 65 Tier, 66 Premium, 67 Blacklist, 68 Blacklist_Reason, 69 PremiumServers, 70 } = ss; 71 await ss.save().catch(error => console.log(error)); 72 return { 73 User, 74 Tier, 75 Premium, 76 Blacklist, 77 Blacklist_Reason, 78 PremiumServers, 79 }; 80 } else { 81 const User = user.User; 82 const Tier = user.Tier; 83 const Premium = user.Premium; 84 const Blacklist = user.Blacklist; 85 const Blacklist_Reason = user.Blacklist_Reason; 86 const PremiumServers = user.PremiumServers; 87 return { 88 User, 89 Tier, 90 Premium, 91 Blacklist, 92 Blacklist_Reason, 93 PremiumServers, 94 }; 95 } 96 }, 97 /** 98 * @param {String} ID - ID of the User 99 * @param {String} Toggle - Blacklist Toggle(true/false) 100 * @param {String} Reason - Blacklist Reason 101 */ 102 async BK(ID, Toggle, Reason) { 103 if (!ID) throw new Error("User ID?"); 104 // if (!Toggle) throw new Error("Blacklist Toggle?"); 105 if (!Reason) throw new Error("Blacklist Feason?"); 106 const user = await u.findOne({ User: ID }); 107 if (!user) { 108 const sus = new u({ User: ID }); 109 if (Toggle == true) { 110 user.Blacklist = true; 111 user.Blacklist_Reason = Reason; 112 } else { 113 user.Blacklist = false; 114 user.Blacklist_Reason = null; 115 } 116 await sus.save().catch(error => console.log(error)); 117 cachegoose.clearCache(); 118 return { Reason }; 119 } else { 120 if (Toggle == true) { 121 user.Blacklist = true; 122 user.Blacklist_Reason = Reason; 123 } else { 124 user.Blacklist = false; 125 user.Blacklist_Reason = null; 126 } 127 await user.save().catch(error => console.log(error)); 128 cachegoose.clearCache(); 129 return { Reason }; 130 } 131 }, 132 /** 133 * @param {String} ID - ID of the User 134 * @param {Boolean} Toggle - Premium Toggle(true/false) 135 * @param {Number} Tier - Tier 136 */ 137 async Premium(ID, Toggle, Tier) { 138 if (!ID) throw new Error("User ID?"); 139 if (!Toggle) throw new Error("Premium Toggle?"); 140 if (!Tier) throw new Error("Premium Feason?"); 141 const user = await u.findOne({ User: ID }); 142 if (!user) { 143 const sus = new u({ User: ID }); 144 if (Toggle == "true") { 145 user.Premium = true; 146 user.Tier = Tier; 147 } else { 148 user.Premium = false; 149 user.Tier = 0; 150 } 151 await sus.save().catch(error => console.log(error)); 152 cachegoose.clearCache(); 153 return { Tier }; 154 } else { 155 if (Toggle == "true") { 156 user.Premium = true; 157 user.Tier = Tier; 158 } else { 159 user.Premium = false; 160 user.Tier = 0; 161 } 162 await user.save().catch(error => console.log(error)); 163 cachegoose.clearCache(); 164 return { Tier }; 165 } 166 }, 167 /** 168 * @param {String} ID 169 */ 170 async CreateGuild(ID) { 171 await new g({ Guild: ID }); 172 return; 173 }, 174 /** 175 * @param {String} ID 176 */ 177 async CreateBot(ID) { 178 await new m({ Guild: ID }); 179 return; 180 }, 181 /** 182 * @param {String} ID - Guild ID 183 */ 184 async DelGuild(ID) { 185 await g.deleteMany({ Guild: ID }); 186 return; 187 }, 188 /** 189 * @param {String} ID - Guild ID 190 * @param {String} Toggle - premium Toggle 191 */ 192 async setPremium(ID, Toggle) { 193 if (!ID) throw new Error("Please Provide a Guild ID"); 194 if (!Toggle) throw new Error("Please Provide a Toggle!"); 195 const guild = await g.findOne({ Guild: ID }); 196 if (!guild) { 197 const newU = new g({ Guild: ID }); 198 if (Toggle == "true") { 199 guild.Premium = true; 200 } else { 201 guild.Premium = false; 202 } 203 await newU.save().catch(error => console.log(error)); 204 return; 205 } else if (Toggle == "true") { 206 guild.Premium = true; 207 } else { 208 guild.Premium = false; 209 } 210 await guild.save().catch(error => console.log(error)); 211 cachegoose.clearCache(); 212 return; 213 }, 214 /** 215 * @param {String} User - User ID 216 * @param {String} ID - Guild ID 217 * @param {String} Method - Method 218 */ 219 async pushGuild(User, ID, method) { 220 if (!method) return new Error("Method?"); 221 u.findOne({ User: User }, async (err, data) => { 222 if (err) throw err; 223 if (!data) return new Error("User not found"); 224 if (method === "push") { 225 await data.PremiumServers.push(ID); 226 await data.save().catch(error => console.log(error)); 227 data.save(); 228 } 229 if (method === "splice") { 230 const index = data.PremiumServers.indexOf(ID); 231 data.PremiumServers.splice(index, 1); 232 data.save(); 233 } 234 cachegoose.clearCache(); 235 return { User }; 236 }); 237 }, 238 /** 239 * @param {String} ID - Guild ID 240 * @param {String} Type - Type 241 * @param {String} Name - Name 242 */ 243 async disable(ID, Type, Name) { 244 if (!Name) throw new Error("Name?"); 245 if (!Type) throw new Error("Type?"); 246 if (!ID) throw new Error("Guild ID?"); 247 if (Type === "category") { 248 const db = await g.findOne({ Guild: ID }); 249 if (!db) { 250 const newdoc = await new g({ Guild: ID }); 251 await newdoc.save().catch(error => console.log(error)); 252 } 253 await db.Category.push(Name); 254 await db.save().catch(e => console.log(e)); 255 } 256 if (Type === "command") { 257 const db = await g.findOne({ Guild: ID }); 258 if (!db) { 259 const newdoc = await new g({ Guild: ID }); 260 await newdoc.save().catch(error => console.log(error)); 261 } 262 await db.Commands.push(Name); 263 await db.save().catch(e => console.log(e)); 264 } 265 cachegoose.clearCache(); 266 return { Name }; 267 }, 268 /** 269 * @param {String} ID - Guild ID 270 * @param {String} Type - Type 271 * @param {String} Name - Name 272 */ 273 async enable(ID, Type, Name) { 274 if (!ID) throw new Error("Guild ID?"); 275 if (!Name) throw new Error("Name?"); 276 if (!Type) throw new Error("Type?"); 277 if (Type === "category") { 278 const db = await g.findOne({ Guild: ID }); 279 if (!db) { 280 return false; 281 } 282 const index = db.Category.indexOf(Name.toLowerCase()); 283 await db.Category.splice(index, 1); 284 await db.save().catch(e => console.log(e)); 285 } 286 if (Type === "command") { 287 const db = await g.findOne({ Guild: ID }); 288 if (!db) { 289 return false; 290 } 291 const index = db.Commands.indexOf(Name); 292 await db.Commands.splice(index, 1); 293 await db.save().catch(e => console.log(e)); 294 } 295 cachegoose.clearCache(); 296 return true; 297 }, 298 /** 299 * @param {String} ID - Guild ID 300 * @param {String} Toggle - Level Toggle 301 */ 302 async setTips(ID, Toggle) { 303 if (!ID) throw new Error("Please Provide a Guild ID"); 304 if (!Toggle) throw new Error("Please Provide a Toggle!"); 305 const guild = await g.findOne({ Guild: ID }); 306 if (!guild) { 307 const newU = new g({ Guild: ID }); 308 if (Toggle == "true") { 309 guild.Tips = true; 310 } else { 311 guild.Tips = false; 312 } 313 await newU.save().catch(error => console.log(error)); 314 return; 315 } else if (Toggle == "true") { 316 guild.Tips = true; 317 } else { 318 guild.Tips = false; 319 } 320 await guild.save().catch(error => console.log(error)); 321 cachegoose.clearCache(); 322 return; 323 }, 324 };