Ignore:
Timestamp:
03/10/14 00:47:38 (11 years ago)
Author:
hendrikvanantwerpen
Message:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Dev/trunk/src/server/app.js

    r492 r495  
    148148
    149149    function identity(obj) { return obj; }
    150     function handleUnknownResponse(status,error){
     150    function handleUnknownResponse(status,error) {
    151151        return new HTTPResult(500,{error: error.reason});
    152152    }
     
    444444
    445445    // Categories and topics
     446    function getTopicsWithCategory(category) {
     447        var url = '_design/questions/_view/all';
     448        return HTTPResult.fromResponsePromise(couch.get(url,{query:{reduce:true,group:true,group_level:2,startkey:[category],endkey:[category,{}]}}).response,
     449                                       handleUnknownError)
     450        .handle({
     451            200: function(result) {
     452                return _.map(result.rows, function(item) { return { name:item.key[1], count:item.value }; });
     453            },
     454            default: handleUnknownResponse
     455        });
     456    }
    446457    app.get('/api/categories',
    447458        ensureAuthenticated,
     
    466477        function(req,res) {
    467478            var category = req.params.category;
    468             var url = '_design/questions/_view/all';
    469             HTTPResult.fromResponsePromise(couch.get(url,{query:{reduce:true,group:true,group_level:2,startkey:[category],endkey:[category,{}]}}).response,
    470                                            handleUnknownError)
    471             .handle({
    472                 200: function(result) {
    473                     return _.map(result.rows, function(item) { return { name:item.key[1], count:item.value }; });
    474                 },
    475                 default: handleUnknownResponse
    476             })
     479            getTopicsWithCategory(category)
    477480            .handle(res.send.bind(res));
    478481        });
     
    482485        function(req,res) {
    483486            var url = '_design/questions/_view/all_topics';
    484             HTTPResult.fromResponsePromise(couch.get(url,{query:{reduce:true,group:true}}).response,
    485                                            handleUnknownError)
    486             .handle({
    487                 200: function(result) {
    488                     return _.map(result.rows, function(item) { return {name:item.key, count:item.value}; });
    489                 },
    490                 default: handleUnknownResponse
    491             })
    492             .handle(res.send.bind(res));
     487            var hr;
     488            if ( 'category' in req.query ) {
     489                hr = getTopicsWithCategory(req.query.category);
     490            } else {
     491                hr = HTTPResult.fromResponsePromise(couch.get(url,{query:{reduce:true,group:true}}).response,
     492                                                    handleUnknownError)
     493                .handle({
     494                    200: function(result) {
     495                        return _.map(result.rows, function(item) { return {name:item.key, count:item.value}; });
     496                    },
     497                    default: handleUnknownResponse
     498                });
     499            }
     500            hr.handle(res.send.bind(res));
    493501        });
    494502
Note: See TracChangeset for help on using the changeset viewer.