forked from replit-discord/repl-it-starboard
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdb.js
More file actions
73 lines (63 loc) · 2.31 KB
/
Copy pathdb.js
File metadata and controls
73 lines (63 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
let admin = require("firebase-admin");
admin.initializeApp({
credential: admin.credential.cert(require("./key")),
databaseURL: "https://starboard-new.firebaseio.com"
});
let db = admin.firestore();
async function setupGuild(guildId, channelId) {
return new Promise((resolve, reject) => {
let guildRef = db.collection('guilds').doc(guildId);
guildRef.set({
channel: channelId,
minimum: 4,
emoji: '⭐',
starred: {},
members: {},
blacklist: {users: [], channels: []}
}).then(resolve).catch(reject);
});
}
async function getGuild(guildId) {
return new Promise((resolve, reject) => {
let guildRef = db.collection('guilds').doc(guildId);
guildRef.get().then(guild => {
resolve(guild.data());
}).catch(reject);
});
}
async function updateSettings(guildId, setting, value) {
return new Promise((resolve, reject) => {
let guildRef = db.collection('guilds').doc(guildId);
let settings = {};
settings[setting] = value;
guildRef.set(settings, { merge: true }).then(resolve).catch(reject);
});
}
async function updateStar(guildId, messageId, data) {
return new Promise((resolve, reject) => {
let guildRef = db.collection('guilds').doc(guildId);
let newData = {};
newData[messageId] = data;
guildRef.set({'starred': newData}, {merge: true}).then(resolve).catch(reject);
});
}
async function removeStar(guildId, messageId) {
return new Promise((resolve, reject) => {
let guildRef = db.collection('guilds').doc(guildId);
let data = {starred: {}};
data.starred[messageId] = admin.firestore.FieldValue.delete();
guildRef.set(data, {merge: true}).then(resolve).catch(reject);
});
}
async function modifyStars(guildId, memberId, change) {
return new Promise((resolve, reject) => {
let guildRef = db.collection('guilds').doc(guildId);
let data = {members: {}};
data.members[memberId] = admin.firestore.FieldValue.increment(change);
guildRef.set(data, {merge: true}).then(resolve).catch(reject);
});
}
let addToArray = admin.firestore.FieldValue.arrayUnion,
removeFromArray = admin.firestore.FieldValue.arrayRemove,
increment = admin.firestore.FieldValue.increment;
module.exports = {setupGuild, getGuild, updateSettings, updateStar, removeStar, modifyStars, util: {addToArray, removeFromArray, increment}};