lfapi
changeset 22:fef5d8aad4aa
Added support for delegating interest
author | bsw |
---|---|
date | Sun Nov 06 19:46:27 2011 +0100 (2011-11-06) |
parents | 2fcdef9f0e9c |
children | c264e566a2d2 |
files | lfapi/main.js |
line diff
1.1 --- a/lfapi/main.js Sun Nov 06 19:40:56 2011 +0100 1.2 +++ b/lfapi/main.js Sun Nov 06 19:46:27 2011 +0100 1.3 @@ -704,33 +704,42 @@ 1.4 '/interest': function (conn, req, res, params) { 1.5 requireAccessLevel(conn, req, res, 'pseudonym', function() { 1.6 var query = new selector.Selector(); 1.7 - switch (params.snapshot) { 1.8 - case 'latest': 1.9 - query.from('direct_interest_snapshot', 'interest'); 1.10 - query.addWhere('interest.event = issue.latest_snapshot_event'); 1.11 - break; 1.12 - 1.13 - case 'end_of_admission': 1.14 - case 'half_freeze': 1.15 - case 'full_freeze': 1.16 + if (params.snapshot) { 1.17 + if (params.delegating == '1') { 1.18 + query.from('delegating_interest_snapshot', 'interest'); 1.19 + if (params.delegate_member_id) { 1.20 + query.addWhere(['interest.delegate_member_ids @> array[?::int]', params.delegate_member_id]); 1.21 + } 1.22 + if (params.direct_delegate_member_id) { 1.23 + query.addWhere(['interest.delegate_member_ids[1] = ?', params.direct_delegate_member_id]); 1.24 + } 1.25 + } else { 1.26 query.from('direct_interest_snapshot', 'interest'); 1.27 - query.addWhere(['interest.event = ?', params.snapshot]); 1.28 - break; 1.29 - 1.30 - case undefined: 1.31 - if (! req.current_member_id) { 1.32 - respond('json', conn, req, res, 'unprocessable', null, 'No snapshot type given and not beeing member'); 1.33 + } 1.34 + switch (params.snapshot) { 1.35 + case 'latest': 1.36 + query.addWhere('interest.event = issue.latest_snapshot_event'); 1.37 + break; 1.38 + 1.39 + case 'end_of_admission': 1.40 + case 'half_freeze': 1.41 + case 'full_freeze': 1.42 + query.addWhere(['interest.event = ?', params.snapshot]); 1.43 + break; 1.44 + 1.45 + default: 1.46 + respond('json', conn, req, res, 'unprocessable', null, 'Invalid snapshot type'); 1.47 return; 1.48 - }; 1.49 - query.from('interest'); 1.50 - query.addWhere(['interest.member_id = ?', req.current_member_id]); 1.51 - break; 1.52 - 1.53 - default: 1.54 - respond('json', conn, req, res, 'unprocessable', null, 'Invalid snapshot type'); 1.55 + 1.56 + }; 1.57 + } else { 1.58 + if (! req.current_member_id) { 1.59 + respond('json', conn, req, res, 'unprocessable', null, 'No snapshot type given and not beeing member'); 1.60 return; 1.61 - 1.62 - }; 1.63 + }; 1.64 + query.from('interest'); 1.65 + query.addWhere(['interest.member_id = ?', req.current_member_id]); 1.66 + } 1.67 query.addField('interest.*'); 1.68 query.join('member', null, 'member.id = interest.member_id'); 1.69 query.join('issue', null, 'interest.issue_id = issue.id');