Hi All,

I would like to know more about what is the best way to write the view and 
query for get the results using single view and query.
Let me explain my user story here, How i am doing currently.

DataBase Name : KMM Collage.
Roles:Manager,Admin,Principle,HOD,Lecture.
userRole : Manager = 0, Admin = 0,Principle = 0,HOD = 1, Lecture = 2.

*Document Information:*

*{*
*id : hjd565673fjd847567465,*
*student : "Prasanna Kumar",*
*department : "Lecture/HOD"*
*marks:{*
*                1:"hhfdh"*
*                2:"jfjf"*
*            }*

*type :"KMM.Type"*
*}*


*Filter Pull Replication*

> I have filter replication according to login role we have to filter the 
documents.
> If login user is *HOD,* i have to filter only his documents.
> else if login user is *Lecture,* i have to filter only his documents
> else if login user is (*Manager,Admin,Principle*), i have to filter all 
documents

Now Pull replication is done according there roles.
Note: The user may switch at any time, if may documents are not available 
than we have to pull(according his all ).

*Views and Queries*

com.couchbase.lite.View viewTicketsPerProjectPagination = 
database.getView(String.format("%s/%s", D_DOCNAME, 
TICKETS_PER_PROJECT_PAGINATION));
viewTicketsPerProjectPagination.setMap(new Mapper() {
    @Override
    public void map(Map<String, Object> document, Emitter emitter) {
        if (DOCTYPE_TICKET.equals(document.get(TYPE))) {
            emitter.emit(new Object[]{*userRole == 
0?document.get(TYPE):document.get("**department**")*}, null);

        }
    }
}, "1." + userRole);


*Query Part:*


com.couchbase.lite.View viewPerGetAllTickets = 
AppConstants.database.getView(String.format("%s/%s", 
D_DOCNAME,TICKETS_PER_PROJECT_PAGINATION);
queryForGetTickets = viewPerGetAllTickets.createQuery().toLiveQuery();
queryForGetTickets.setStartKey(new Object[]{*userRole == 0?"**KMM.Type": 
Lecture*});

queryForGetTickets.setEndKey(new Object[]{*userRole == 0?"**KMM.Type": 
Lecture*});

queryForGetTickets.run();


*Note : The index will be change according user role.*


*Questions :*


1) Is this best way to do the thinks, like making reindex views again and again 
when user role is changed.

2) Between if i gonna write multiple views and query there is big problem like 
performance wise.

3) Even though if i do like point number 1, there is also performance issue 
will i thinks(when it is bigger database)

4) How i can do the best out of the above user story. Irrespective of the 
Performance and reducing the un wanted views 


*Note : Reindexing view in multiple times, is that good idea for large 
databases*


Please help me out how i can solve this problem, thanks in advance.


if any clarification or any information please revert me back.  


Thank You,

P Prasanna Kumar.


-- 
You received this message because you are subscribed to the Google Groups 
"Couchbase Mobile" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/mobile-couchbase/8221c36b-84ad-4e78-a47a-78a197efaeb2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to