Created
April 29, 2018 06:53
-
-
Save RowlandOti/95e8e8135b5dfd808a2b36c750814e3a to your computer and use it in GitHub Desktop.
Query Firestone Database with Joins
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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", "[email protected]", "0710805009"); | |
User user2 = new User("kevanlan", "[email protected]", "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