mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-10 08:33:30 +01:00
64 lines
1.0 KiB
JavaScript
64 lines
1.0 KiB
JavaScript
"use strict";
|
|
|
|
class Cache extends Array{
|
|
constructor(discrim, limit){
|
|
super();
|
|
this.discrim = discrim || "id";
|
|
}
|
|
|
|
get(key, value){
|
|
var found = null;
|
|
this.forEach( (val, index, array) => {
|
|
if(val.hasOwnProperty(key) && val[key] == value){
|
|
found = val;
|
|
return;
|
|
}
|
|
} );
|
|
return found;
|
|
}
|
|
|
|
getAll(key, value){
|
|
var found = [];
|
|
this.forEach( (val, index, array) => {
|
|
if(val.hasOwnProperty(key) && val[key] == value){
|
|
found.push(val);
|
|
return;
|
|
}
|
|
} );
|
|
return found;
|
|
}
|
|
|
|
add(data){
|
|
var exit = false;
|
|
for(var item of this){
|
|
if(item[this.discrim] === data[this.discrim]){
|
|
exit = item;
|
|
break;
|
|
}
|
|
}
|
|
if(exit){
|
|
return exit;
|
|
}else{
|
|
if(this.limit && this.length >= this.limit){
|
|
this.splice(0, 1);
|
|
}
|
|
this.push(data);
|
|
return data;
|
|
}
|
|
}
|
|
|
|
remove(data){
|
|
var index = this.indexOf(data);
|
|
if(~index){
|
|
this.splice(index, 1);
|
|
}else{
|
|
var item = this.get("id", data.id);
|
|
if(item){
|
|
this.splice(this.indexOf(item), 1);
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
module.exports = Cache; |