Skip to content

Instantly share code, notes, and snippets.

@RowlandOti
Created April 29, 2018 06:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RowlandOti/95e8e8135b5dfd808a2b36c750814e3a to your computer and use it in GitHub Desktop.
Save RowlandOti/95e8e8135b5dfd808a2b36c750814e3a to your computer and use it in GitHub Desktop.
Query Firestone Database with Joins
package com.rowland.foodorder;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.EventListener;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.FirebaseFirestoreException;
import com.google.firebase.firestore.WriteBatch;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
private static final String LOG_TAG = MainActivity.class.getSimpleName();
private FirebaseFirestore db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = FirebaseFirestore.getInstance();
WriteBatch batch = db.batch();
Group group1 = new Group(Group.MERCHANT);
Group group2 = new Group(Group.CLIENT);
CollectionReference groupCollectionRef = db.collection("groups");
batch.set(groupCollectionRef.document(group1.name), group1);
batch.set(groupCollectionRef.document(group2.name), group2);
User user1 = new User("rowlandoti", "rowlandotieno@gmail.com", "0710805009");
User user2 = new User("kevanlan", "kevanlanister@gmail.com", "0716855689");
CollectionReference userCollectionRef = db.collection("users");
batch.set(userCollectionRef.document(user1.username), user1);
batch.set(userCollectionRef.document(user2.username), user2);
Map<String, Object> merchantUsers = new HashMap<>();
merchantUsers.put(user1.username, true);
merchantUsers.put(user2.username, true);
Map<String, Object> clientUsers = new HashMap<>();
clientUsers.put(user2.username, true);
CollectionReference groupUsersCollectionRef = db.collection("groupusers");
CollectionReference userGroupsCollectionRef = db.collection("usergroups");
batch.set(groupUsersCollectionRef.document(Group.MERCHANT), merchantUsers);
batch.set(groupUsersCollectionRef.document(Group.CLIENT), clientUsers);
Map<String, Object> user1Groups = new HashMap<>();
user1Groups.put(Group.MERCHANT, true);
user1Groups.put(Group.CLIENT, true);
Map<String, Object> user2Groups = new HashMap<>();
user2Groups.put(Group.CLIENT, true);
batch.set(userGroupsCollectionRef.document(user1.username), user1Groups);
batch.set(userGroupsCollectionRef.document(user2.username), user2Groups);
batch.commit().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(MainActivity.this, "Is Successful", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public void onResume() {
super.onResume();
db.collection("groupusers")
.document(Group.MERCHANT)
.addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
if (documentSnapshot != null) {
Map<String, Object> merchantKeys = documentSnapshot.getData();
for (Map.Entry<String, Object> entry : merchantKeys.entrySet()) {
Toast.makeText(MainActivity.this, entry.getKey().toString(), Toast.LENGTH_SHORT).show();
}
}
}
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment