lfapi

changeset 3:e69609a3c98a

Added member_ttl, added 'latest' snapshot to interest.
author bsw
date Thu Oct 20 13:55:29 2011 +0200 (2011-10-20)
parents cfdb8f15c388
children 77b761569ae2
files lfapi/main.js
line diff
     1.1 --- a/lfapi/main.js	Thu Oct 20 13:54:07 2011 +0200
     1.2 +++ b/lfapi/main.js	Thu Oct 20 13:55:29 2011 +0200
     1.3 @@ -46,7 +46,7 @@
     1.4  
     1.5  // callback function, encoding result and sending it to the client
     1.6  function respond(mode, conn, req, res, status, object, err) {
     1.7 -  var http_status = 500;
     1.8 +  var http_status = 200;
     1.9    var command;
    1.10  
    1.11    if (status == 'ok') {
    1.12 @@ -137,7 +137,6 @@
    1.13  
    1.14      if (objects) {
    1.15        var objects_exists = false;
    1.16 -      query = new selector.Selector();
    1.17        var ids_hash = {};
    1.18        if (typeof(objects) == 'array') {
    1.19          if (objects.length > 0) {
    1.20 @@ -163,10 +162,12 @@
    1.21          for (key in ids_hash) {
    1.22            ids.push(key)
    1.23          }
    1.24 -
    1.25 -        query.from(class);
    1.26 -        query.addWhere([class + '.id IN (??)', ids]);
    1.27 -        fields.addObjectFields(query, class);
    1.28 +        if (ids.length > 0) {
    1.29 +          query = new selector.Selector();
    1.30 +          query.from(class);
    1.31 +          query.addWhere([class + '.id IN (??)', ids]);
    1.32 +          fields.addObjectFields(query, class);
    1.33 +        }
    1.34        };
    1.35      };
    1.36  
    1.37 @@ -395,12 +396,22 @@
    1.38        query.addField('"liquid_feedback_version".*');
    1.39        db.query(conn, req, res, query, function (result, conn) {
    1.40          var liquid_feedback_version = result.rows[0];
    1.41 -        respond('json', conn, req, res, 'ok', {
    1.42 -          core_version: liquid_feedback_version.string,
    1.43 -          api_version: api_version,
    1.44 -          current_access_level: req.current_member_id ? 'member' : req.current_access_level,
    1.45 -          current_member_id: req.current_member_id,
    1.46 -          settings: config.settings
    1.47 +        var query = new selector.Selector();
    1.48 +        query.from('"system_setting"');
    1.49 +        query.addField('"member_ttl"');
    1.50 +        db.query(conn, req, res, query, function (result, conn) {
    1.51 +          var member_ttl = null;
    1.52 +          if (result.rows[0]) {
    1.53 +            member_ttl = result.rows[0].member_ttl;
    1.54 +          };
    1.55 +          respond('json', conn, req, res, 'ok', {
    1.56 +            core_version: liquid_feedback_version.string,
    1.57 +            api_version: api_version,
    1.58 +            current_access_level: req.current_member_id ? 'member' : req.current_access_level,
    1.59 +            current_member_id: req.current_member_id,
    1.60 +            member_ttl: member_ttl,
    1.61 +            settings: config.settings
    1.62 +          });
    1.63          });
    1.64        });
    1.65      });
    1.66 @@ -414,8 +425,8 @@
    1.67        db.query(conn, req, res, query, function (result, conn) {
    1.68          var member_count = result.rows[0];
    1.69          respond('json', conn, req, res, 'ok', {
    1.70 -          member_count: member_count.total_count,
    1.71 -          member_count_calculated: member_count.calculated
    1.72 +          total_count: member_count.total_count,
    1.73 +          calculated: member_count.calculated
    1.74          });
    1.75        });
    1.76      });
    1.77 @@ -641,8 +652,18 @@
    1.78    '/interest': function (conn, req, res, params) {
    1.79      requireAccessLevel(conn, req, res, 'pseudonym', function() {
    1.80        var query = new selector.Selector();
    1.81 -      query.from('interest JOIN member ON member.id = interest.member_id JOIN issue on interest.issue_id = issue.id JOIN policy ON policy.id = issue.policy_id JOIN area ON area.id = issue.area_id JOIN unit ON area.unit_id = unit.id');
    1.82 +      if (!params.snapshot) {
    1.83 +        query.from('interest');
    1.84 +      } else if (params.snapshot == 'latest') {
    1.85 +        query.from('direct_interest_snapshot', 'interest');
    1.86 +        query.addWhere('interest.event = issue.latest_snapshot_event');
    1.87 +      };
    1.88        query.addField('interest.*');
    1.89 +      query.join('member', null, 'member.id = interest.member_id');
    1.90 +      query.join('issue', null, 'interest.issue_id = issue.id');
    1.91 +      query.join('policy', null, 'policy.id = issue.policy_id');
    1.92 +      query.join('area', null, 'area.id = issue.area_id');
    1.93 +      query.join('unit', null, 'area.unit_id = unit.id');
    1.94        general_params.addMemberOptions(req, query, params);
    1.95        general_params.addIssueOptions(req, query, params);
    1.96        query.addOrderBy('interest.issue_id, interest.member_id');
    1.97 @@ -687,8 +708,8 @@
    1.98        var query = new selector.Selector();
    1.99        query.from('initiative JOIN issue ON issue.id = initiative.issue_id JOIN policy ON policy.id = issue.policy_id JOIN area ON area.id = issue.area_id JOIN unit ON area.unit_id = unit.id');
   1.100        fields.addObjectFields(query, 'initiative');
   1.101 +      query.addOrderBy('initiative.id');
   1.102        general_params.addInitiativeOptions(req, query, params);
   1.103 -      query.addOrderBy('initiative.issue_id, initiative.id');
   1.104        general_params.addLimitAndOffset(query, params);
   1.105        db.query(conn, req, res, query, function (initiative_result, conn) {
   1.106          var result = { result: initiative_result.rows }
   1.107 @@ -1187,13 +1208,11 @@
   1.108        var query = new selector.SQLUpdate('member');
   1.109        query.addWhere(['member.id = ?', req.current_member_id]);
   1.110        fields.forEach( function(field) {
   1.111 -        var tmp = {}
   1.112          if (typeof(params[field]) != 'undefined') {
   1.113 -          tmp[field] = params[field];
   1.114 +          query.addValues({ field: params[field] });
   1.115          } else {
   1.116 -          tmp[field] = null;
   1.117 +          query.addValues({ field: null });
   1.118          }
   1.119 -        query.addValues(tmp);
   1.120        });
   1.121        db.query(conn, req, res, query, function(result) { respond('json', conn, req, res, 'ok'); });
   1.122      });
   1.123 @@ -1607,6 +1626,11 @@
   1.124          // new draft in new initiative in existant issue
   1.125          } else if (issue_id && !area_id && !initiative_id) {
   1.126  
   1.127 +          if (!initiative_name) {
   1.128 +            respond('json', conn, req, res, 'unprocessable', null, 'No initiative name supplied.');
   1.129 +            return;
   1.130 +          }
   1.131 +          
   1.132            // check privilege
   1.133            requireIssuePrivilege(conn, req, res, issue_id, function() {
   1.134              

Impressum / About Us