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