| | @@ -33,21 +33,17 @@ |
| 33 | 33 | |
| 34 | 34 | /* |
| 35 | 35 | ** Generates an artifact Object for the given rid/zUuid. rid |
| 36 | 36 | ** must refer to a Checkin. |
| 37 | 37 | ** |
| 38 | | -** |
| 39 | | -** TODO: consolidate the result structure (and its generation) with |
| 40 | | -** /json/timeline/ci. |
| 38 | +** Returned value is NULL or an Object owned by the caller. |
| 41 | 39 | */ |
| 42 | | -static cson_value * json_artifact_ci( int rid, char const * zUuid ){ |
| 43 | | - cson_value * v = cson_value_new_object(); |
| 44 | | - cson_object * o = cson_value_get_object(v); |
| 40 | +cson_value * json_artifact_for_ci( int rid, char const * zUuid, char showFiles ){ |
| 45 | 41 | char const * zParent = NULL; |
| 42 | + cson_value * v = NULL; |
| 46 | 43 | Stmt q; |
| 47 | 44 | assert( NULL != zUuid ); |
| 48 | | - cson_object_set(o,"isLeaf", cson_value_new_bool(is_a_leaf(rid))); |
| 49 | 45 | zParent = db_text(0, |
| 50 | 46 | "SELECT uuid FROM plink, blob" |
| 51 | 47 | " WHERE plink.cid=%d AND blob.rid=plink.pid AND plink.isprim", |
| 52 | 48 | rid |
| 53 | 49 | ); |
| | @@ -59,18 +55,22 @@ |
| 59 | 55 | " WHERE blob.rid=%d" |
| 60 | 56 | " AND event.objid=%d", |
| 61 | 57 | rid, rid |
| 62 | 58 | ); |
| 63 | 59 | if( db_step(&q)==SQLITE_ROW ){ |
| 60 | + cson_object * o; |
| 61 | + cson_value * tmpV = NULL; |
| 62 | + v = cson_value_new_object(); |
| 63 | + o = cson_value_get_object(v); |
| 64 | 64 | /*const char *zUuid = db_column_text(&q, 0);*/ |
| 65 | 65 | char * zTmp; |
| 66 | 66 | const char *zUser; |
| 67 | 67 | const char *zComment; |
| 68 | 68 | char * zEUser, * zEComment; |
| 69 | 69 | int mtime, omtime; |
| 70 | | - cson_value * fileList = NULL; |
| 71 | 70 | #define SET(K,V) cson_object_set(o,(K), (V)) |
| 71 | + SET("isLeaf", cson_value_new_bool(is_a_leaf(rid))); |
| 72 | 72 | SET("uuid",json_new_string(zUuid)); |
| 73 | 73 | zUser = db_column_text(&q,2); |
| 74 | 74 | SET("user",json_new_string(zUser)); |
| 75 | 75 | zEUser = db_text(0, |
| 76 | 76 | "SELECT value FROM tagxref WHERE tagid=%d AND rid=%d", |
| | @@ -99,23 +99,34 @@ |
| 99 | 99 | |
| 100 | 100 | if(zParent){ |
| 101 | 101 | SET("parentUuid", json_new_string(zParent)); |
| 102 | 102 | } |
| 103 | 103 | |
| 104 | | - fileList = json_timeline_get_changed_files(rid); |
| 105 | | - if(fileList){ |
| 106 | | - SET("files",fileList); |
| 104 | + if( showFiles ){ |
| 105 | + cson_value * fileList = json_timeline_get_changed_files(rid); |
| 106 | + if(fileList){ |
| 107 | + SET("files",fileList); |
| 108 | + } |
| 109 | + } |
| 110 | + |
| 111 | + tmpV = json_tags_for_rid(rid); |
| 112 | + if(tmpV){ |
| 113 | + SET("tags",tmpV); |
| 107 | 114 | } |
| 108 | 115 | |
| 109 | 116 | #undef SET |
| 110 | | - }else{ |
| 111 | | - cson_value_free(v); |
| 112 | | - v = NULL; |
| 113 | 117 | } |
| 114 | 118 | db_finalize(&q); |
| 115 | 119 | return v; |
| 116 | 120 | } |
| 121 | + |
| 122 | +/* |
| 123 | +** Sub-impl of /json/artifact for checkins. |
| 124 | +*/ |
| 125 | +static cson_value * json_artifact_ci( int rid, char const * zUuid ){ |
| 126 | + return json_artifact_for_ci(rid, zUuid, 1); |
| 127 | +} |
| 117 | 128 | |
| 118 | 129 | static char perms_can_read(){ |
| 119 | 130 | return g.perm.Read ? 1 : 0; |
| 120 | 131 | } |
| 121 | 132 | |
| 122 | 133 | |