/*
* Copyright 2011 Marek Pilecky
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.mefi.jkuuza.model;
import org.ektorp.CouchDbConnector;
import org.ektorp.ViewQuery;
import org.ektorp.ViewResult;
import org.ektorp.support.CouchDbRepositorySupport;
import org.ektorp.support.View;
/**
*
* @author Marek Pilecky
*/
public class BodyContentRepository extends CouchDbRepositorySupport<BodyContent> {
public BodyContentRepository(CouchDbConnector connector) {
super(BodyContent.class, connector);
initStandardDesignDocument();
}
/**
* Finds BodyContent document by url
*
* @param url
* @return List of BodyContent instances
*/
@View(name = "by_url", map = "function(doc) { if(doc && doc.docType == \"bodyContent\") { emit(doc.url, doc) }}")
public BodyContent findByUrl(String url) {
ViewQuery query = new ViewQuery()
.designDocId("_design/BodyContent")
.viewName("by_url")
.key(url);
return db.queryView(query, BodyContent.class).get(0);
}
@View(name = "get_total_count", map = "function(doc) { if(doc.docType == \"bodyContent\") { emit(doc.id, null) }}")
public int getTotalCount() {
ViewQuery query = new ViewQuery()
.designDocId("_design/BodyContent")
.viewName("get_total_count")
.group(true);
ViewResult r = db.queryView(query);
return r.getTotalRows();
}
}