UNPKG

seyfert

Version:

The most advanced framework for discord bots

100 lines (99 loc) 3.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GuildRelatedResource = void 0; const common_1 = require("../../../common"); class GuildRelatedResource { cache; client; namespace = 'base'; constructor(cache, client) { this.cache = cache; this.client = client; } //@ts-expect-error filter(data, id, guild_id, from) { return true; } parse(data, id, guild_id) { if (!data.id) data.id = id; data.guild_id = guild_id; return data; } get adapter() { return this.cache.adapter; } removeIfNI(intent, id, guildId) { if (!this.cache.hasIntent(intent)) { return this.remove(id, guildId); } } setIfNI(from, intent, id, guildId, data) { if (!this.cache.hasIntent(intent)) { return this.set(from, id, guildId, data); } } get(id) { return this.adapter.get(this.hashId(id)); } bulk(ids) { return (0, common_1.fakePromise)(this.adapter.bulkGet(ids.map(x => this.hashId(x)))).then(x => x.filter(y => y)); } set(from, __keys, guild, data) { const keys = (Array.isArray(__keys) ? __keys : [[__keys, data]]).filter(x => this.filter(x[1], x[0], guild, from)); return (0, common_1.fakePromise)(this.addToRelationship(keys.map(x => x[0]), guild)).then(() => this.adapter.bulkSet(keys.map(([key, value]) => { return [this.hashId(key), this.parse(value, key, guild)]; }))); } patch(from, __keys, guild, data) { const keys = (Array.isArray(__keys) ? __keys : [[__keys, data]]).filter(x => this.filter(x[1], x[0], guild, from)); return (0, common_1.fakePromise)(this.addToRelationship(keys.map(x => x[0]), guild)).then(() => this.adapter.bulkPatch(keys.map(([key, value]) => { return [this.hashId(key), this.parse(value, key, guild)]; }))); } remove(id, guild) { const ids = Array.isArray(id) ? id : [id]; return (0, common_1.fakePromise)(this.removeToRelationship(ids, guild)).then(() => this.adapter.bulkRemove(ids.map(x => this.hashId(x)))); } keys(guild) { return guild === '*' ? this.adapter.scan(this.hashId(guild), true) : (0, common_1.fakePromise)(this.adapter.getToRelationship(this.hashId(guild))).then(keys => keys.map(x => `${this.namespace}.${x}`)); } values(guild) { return guild === '*' ? (0, common_1.fakePromise)(this.adapter.scan(this.hashId(guild))).then(x => x) : (0, common_1.fakePromise)(this.adapter.getToRelationship(this.hashId(guild))).then(keys => this.adapter.bulkGet(keys.map(x => `${this.namespace}.${x}`))); } count(to) { return to === '*' ? (0, common_1.fakePromise)(this.keys(to)).then(x => x.length) : this.adapter.count(this.hashId(to)); } contains(id, guild) { return this.adapter.contains(this.hashId(guild), id); } getToRelationship(guild) { return this.adapter.getToRelationship(this.hashId(guild)); } addToRelationship(id, guild) { return this.adapter.addToRelationship(this.hashId(guild), id); } removeToRelationship(id, guild) { return this.adapter.removeToRelationship(this.hashId(guild), id); } removeRelationship(id) { return this.adapter.removeRelationship((Array.isArray(id) ? id : [id]).map(x => this.hashId(x))); } hashId(id) { return id.startsWith(this.namespace) ? id : `${this.namespace}.${id}`; } flush(guild) { return (0, common_1.fakePromise)(this.keys(guild)).then(keys => { return (0, common_1.fakePromise)(this.adapter.bulkRemove(keys)).then(() => { return this.removeRelationship(guild); }); }); } } exports.GuildRelatedResource = GuildRelatedResource;