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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
/*
** 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){
SET("editedBy", json_new_string(zEUser));
free(zEUser);
}
zComment = db_column_text(&q,3);
SET("comment",json_new_string(zComment));
zEComment = db_text(0,
"SELECT value FROM tagxref WHERE tagid=%d AND rid=%d",
TAG_COMMENT, rid);
if(zEComment){
SET("editedComment", json_new_string(zEComment));
free(zEComment);
}
mtime = db_column_int(&q,1);
SET("mtime",json_new_int(mtime));
omtime = db_column_int(&q,4);
if(omtime && (omtime!=mtime)){
SET("omtime",json_new_int(omtime));
}
if(zParent){
SET("parentUuid", json_new_string(zParent));
}
tmpV = json_tags_for_rid(rid);
|
|
|
>
>
>
>
|
>
>
>
|
|
|
|
>
<
|
>
>
>
>
>
<
|
>
>
>
>
>
|
|
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
/*
** 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 showFiles ){
char const * zParent = NULL;
cson_value * v = NULL;
Stmt q;
static cson_value * eventTypeLabel = NULL;
if(!eventTypeLabel){
eventTypeLabel = json_new_string("commit");
json_gc_add("$EVENT_TYPE_LABEL(commit)", eventTypeLabel, 1);
}
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, "
" strftime('%%s',mtime), "
" user, "
" comment,"
" strftime('%%s',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("artifactType", eventTypeLabel );
SET("uuid",json_new_string(zUuid));
SET("isLeaf", cson_value_new_bool(is_a_leaf(rid)));
zUser = db_column_text(&q,2);
zEUser = db_text(0,
"SELECT value FROM tagxref WHERE tagid=%d AND rid=%d",
TAG_USER, rid);
if(zEUser){
SET("user", json_new_string(zEUser));
if(0!=strcmp(zEUser,zUser)){
SET("originUser",json_new_string(zUser));
}
free(zEUser);
}else{
SET("user",json_new_string(zUser));
}
zComment = db_column_text(&q,3);
zEComment = db_text(0,
"SELECT value FROM tagxref WHERE tagid=%d AND rid=%d",
TAG_COMMENT, rid);
if(zEComment){
SET("comment",json_new_string(zEComment));
if(0 != strcmp(zEComment,zComment)){
SET("originComment", json_new_string(zComment));
}
free(zEComment);
}else{
SET("comment",json_new_string(zComment));
}
mtime = db_column_int(&q,1);
SET("mtime",json_new_int(mtime));
omtime = db_column_int(&q,4);
if(omtime && (omtime!=mtime)){
SET("originTime",json_new_int(omtime));
}
if(zParent){
SET("parentUuid", json_new_string(zParent));
}
tmpV = json_tags_for_rid(rid);
|