pcvonz-bs-firebase

0.3.0 • Public • Published

bs-firebase

🚧 WIP

Initialize app

[@bs.module]
external firebaseConfig: firebaseConfig = "./config/firebase-config.json";

firebase->initializeApp(firebaseConfig);

Authentication

open BsFirebase;

firebase
->auth()
->Auth.onAuthStateChanged(user => {
  switch (user->Js.Nullable.toOption) {
  | None => ()
  | Some(u) =>
    Js.log3(
      u->Auth.User.uid,
      u->Auth.User.email,
      u->Auth.User.displayName,
    )
  }
});

let signInWithGoogle = () => firebase->auth()->Auth.signInWithPopup(Auth.Provider.google());
let signInWithEmailAndPassword = (~email, ~password) => firebase->auth()->Auth.signInWithEmailAndPassword(~email, ~password);
let signOut = () => firebase->auth()->Auth.signOut();

Firestore

Fetch all

let fetchAll = () => {
  firebase
    ->firestore()
    ->Firestore.collection("mycollection")
    ->Firestore.Collection.get()
    |> Js.Promise.then_(querySnapshot =>
        querySnapshot
        ->Firestore.QuerySnapshot.docs
        ->Belt.Array.map(snapshot => {
            let data = snapshot->Firestore.DocRef.data();
            Js.log(snapshot->Firestore.DocRef.id);
            Js.log(data##someAttribute);

            data;
          })
        |> Js.Promise.resolve
      );
};

Fetch by id

let fetchItem = (id) => {
  firebase
  ->firestore()
  ->Firestore.collection("mycollection")
  ->Firestore.Collection.doc(id)
  ->Firestore.Collection.Doc.get()
  |> Js.Promise.then_(doc => {
       let data = doc->Firestore.DocRef.data();
       Js.log(data);

       data;
     });
}

Create

let create = (title, description) =>
  firebase
  ->firestore()
  ->Firestore.collection("collection")
  ->Firestore.Collection.add({
    "title": title,
    "description": description,
  });

Update

let update = (id, title) =>
  firebase
  ->firestore()
  ->Firestore.collection("collection")
  ->Firestore.Collection.doc(id)
  ->Firestore.Collection.Doc.set({
    "title": title
  });

Remove

let remove = (id: string) =>
  firebase
  ->firestore()
  ->Firestore.collection("mycollection")
  ->Firestore.Collection.doc(id)
  ->Firestore.Collection.Doc.delete();

Package Sidebar

Install

npm i pcvonz-bs-firebase

Weekly Downloads

1

Version

0.3.0

License

MIT

Unpacked Size

7.81 kB

Total Files

7

Last publish

Collaborators

  • pcvonz