Skip to content

Instantly share code, notes, and snippets.

@guillaumeduhan
Last active March 29, 2021 16:30
Show Gist options
  • Save guillaumeduhan/f34355aee6145ff906966f5421ad8495 to your computer and use it in GitHub Desktop.
Save guillaumeduhan/f34355aee6145ff906966f5421ad8495 to your computer and use it in GitHub Desktop.
firebase_services
import firebase from 'firebase/app'
import 'firebase/auth'
import 'firebase/firestore'
import 'firebase/database'
import moment from 'moment'
function CREATE_DOCUMENT(collection, obj) {
return new Promise((resolve, reject) => {
firebase
.firestore()
.collection(collection)
.doc(obj.id)
.set({...obj})
.then(() => {
resolve()
})
.catch((err) => {
reject(err)
})
})
}
function CREATE_DOCUMENT_IN_COLLECTION_BY_ID(collection, objId, objCollection, obj) {
return new Promise((resolve, reject) => {
firebase
.firestore()
.collection(collection)
.doc(objId)
.collection(objCollection)
.doc(moment(obj.date).format('DD-MM-YYYY').toString())
.set({...obj})
.then(() => {
resolve()
})
.catch((err) => {
reject(err)
})
})
}
function DELETE_USER() {
return new Promise((resolve, reject) => {
var user = firebase.auth().currentUser
if (user) {
user.delete().then(function() {
resolve(user)
})
.catch(function(error) {
reject(error)
})
} else {
reject('no user')
}
})
}
function DELETE_DOCUMENT_BY_ID(collection, objId) {
return new Promise((resolve, reject) => {
firebase
.firestore()
.collection(collection)
.doc(objId)
.delete()
.then(() => {
resolve()
})
.catch((err) => {
reject(err)
})
})
}
function GET_DATABASE(child) {
return new Promise((resolve, reject) => {
firebase
.database()
.ref()
.child(child)
.get()
.then(function (snapshot) {
if (snapshot.exists()) {
console.log(snapshot.val());
}
else {
console.log("No data available");
}
resolve(snapshot)
}).catch(function (error) {
console.error(error);
reject(error)
});
})
}
function GET_DOCUMENT_BY_ID(collection, objId, subCollection) {
return new Promise((resolve, reject) => {
firebase
.firestore()
.collection(collection)
.doc(objId)
.get()
.then((doc) => {
if (subCollection) {
GET_SUBCOLLECTION_DOCUMENT_BY_ID(collection, objId, subCollection)
.then((subcollectionFetched) => {
let final = doc.data()
final[subCollection] = subcollectionFetched
resolve(final)
})
} else {
resolve(doc.data())
}
})
.catch((err) => {
reject(err)
})
})
}
function GET_SUBCOLLECTION_DOCUMENT_BY_ID(collection, objId, subCollection) {
return new Promise((resolve, reject) => {
firebase
.firestore()
.collection(collection)
.doc(objId)
.collection(subCollection)
.get()
.then((snapshot) => {
if (snapshot) {
resolve(snapshot.docs.map(doc => doc.data()))
} else {
resolve()
}
})
.catch((err) => {
reject(err)
})
})
}
function GET_USER_BY_MAIL(email) {
return new Promise((resolve, reject) => {
firebase
.firestore()
.collection('USERS')
.where('email', '==', email)
.get()
.then((querySnapshot) => {
if (!querySnapshot.docs.length) {
resolve()
}
querySnapshot.forEach(function(doc) {
resolve(doc.data())
})
})
.catch((err) => {
console.log("Error getting documents: ", err)
reject()
})
})
}
function UPDATE_DOCUMENT(collection, obj) {
return new Promise((resolve, reject) => {
firebase
.firestore()
.collection(collection)
.doc(obj.id)
.update({...obj})
.then(() => {
resolve()
})
.catch((err) => {
reject(err)
})
})
}
export {
CREATE_DOCUMENT,
CREATE_DOCUMENT_IN_COLLECTION_BY_ID,
DELETE_USER,
DELETE_DOCUMENT_BY_ID,
GET_DATABASE,
GET_DOCUMENT_BY_ID,
GET_SUBCOLLECTION_DOCUMENT_BY_ID,
GET_USER_BY_MAIL,
UPDATE_DOCUMENT
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment