-
Notifications
You must be signed in to change notification settings - Fork 0
/
queryutils.js
119 lines (110 loc) 路 2.84 KB
/
queryutils.js
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import {
initializeFirestore,
getDocs,
doc,
getDoc,
setDoc,
collection,
query,
where,
} from 'firebase/firestore';
import { initializeApp } from 'firebase/app';
import { firebaseConfig } from './config';
import { decode, encode } from 'base-64';
import { auth } from './firebase';
if (!global.btoa) {
global.btoa = encode;
}
if (!global.atob) {
global.atob = decode;
}
const app = initializeApp(firebaseConfig);
const db = initializeFirestore(app, {
experimentalForceLongPolling: true,
useFetchStreams: false,
});
exports.getUsers = async (params) => {
try {
const { currentUser } = auth;
let paramToQ = params == undefined ? '' : params.user;
const q = query(collection(db, 'users'));
const querySnapshot = await getDocs(q);
const newArray = [];
if (paramToQ === '' || paramToQ === null) {
querySnapshot.forEach((doc) => {
if (doc.data().uid !== currentUser.uid) {
newArray.push(doc.data());
}
});
} else {
querySnapshot.forEach((doc) => {
if (doc.data().firstname == paramToQ) {
newArray.push(doc.data());
}
});
}
return newArray;
} catch (err) {
console.error(err);
}
};
exports.getUser = async (uid) => {
try {
const docRef = doc(db, 'users', `${uid}`);
const docSnap = await getDoc(docRef);
return docSnap.data();
} catch (err) {
console.error(err);
}
};
exports.addContact = async (uid, userB) => {
try {
await setDoc(
doc(
collection(doc(collection(db, 'users'), `${uid}`), 'contacts'),
`${userB}`
),
{ uid: `${userB}` }
);
} catch (err) {
console.error(err);
}
};
exports.getUsersByQuery = async (item) => {
try {
let param1 = item.dancestyles == undefined ? '' : item.dancestyles;
let param2 = item.role == undefined ? '' : item.role;
const usersCollection = collection(db, 'users');
const compoundQuery = query(
usersCollection,
where('dancestyles', '==', item.dancestyles),
where('role', '==', item.role)
);
const danceQuery = query(
usersCollection,
where('dancestyles', '==', item.dancestyles)
);
const roleQuery = query(usersCollection, where('role', '==', item.role));
const newArray = [];
if (param2 === '' || param2 === null) {
const querySnapshot = await getDocs(danceQuery);
querySnapshot.forEach((doc) => {
newArray.push(doc.data());
});
}
if (param1 === '' || param1 === null) {
const querySnapshot = await getDocs(roleQuery);
querySnapshot.forEach((doc) => {
newArray.push(doc.data());
});
} else {
const querySnapshot = await getDocs(compoundQuery);
querySnapshot.forEach((doc) => {
newArray.push(doc.data());
});
}
return newArray;
} catch (err) {
console.error(err);
}
};