Slide 12
Slide 12 text
function find( slug, createdBy, popular, count /* ..and so forth. */ ) {
return builder
.from( "entries" )
.select( [ "id", "slug", "createdBy", "updatedDate" ] )
.when( ! isNull( slug ), function( query ) {
query.where( "slug", "like", "%#slug#%" );
} )
.when( ! isNull( createdBy ), function( query ) {
query.where( "createdBy", createdBy );
} )
.when( ! isNull( popular ), function( query ) {
query
.addSelect( query.raw( "COUNT(*) AS installCount" ) )
.join( "installs", "entries.id", "installs.entryId" )
.groupBy( [ "id", "slug", "createdBy", "updatedDate" ] );
} )
.when( ! isNull( popular ), function( query ) {
query.orderBy("installCount", "desc");
}, function( query ) {
query.orderBy("updatedDate", "desc");
} )
.get();
}