Example #1
0
ValueArray Client::FetchResults(const CommitFilter& f) const {
	SQLR * Select(SqlAll(RESULT),
	              DT, CMT, BRANCH,
	              UID, ToSqlVal(Regexp(PATH,data["SRC"])).As("FITS"))
	       .From(COMMITS)
	       .LeftJoin(RESULT).On(UID == CMT_UID && CLIENT_ID == data["ID"])
	       .Where(f)
	       .OrderBy(Descending(DT))
	       .Limit(f.offset, f.limit);
	ValueArray res;
	ValueMap vm;
	Time t = GetUtcTime();
	int maxage = int(data["MAX_AGE"])*24*60*60;
	while(SQLR.Fetch(vm)){
		SetComputedAttributes(vm);
		SetDuration(vm, vm["STATUS"]);
		if (IsNull(vm["STATUS"])) {
			if (!vm["FITS"])
				vm.Set("STATUSSTR", "Not interested");
			else if (t-Time(vm["DT"]) > maxage)
				vm.Set("STATUSSTR", "Too old");
			else
				vm.Set("STATUSSTR", "Ready");
		}
		res.Add(vm);
	}
	return res;
}
Example #2
0
ValueMap Result::LoadPage(const CommitFilter& f) {
	SQLR * Select(SqlAll(RESULT),UID,CMT,BRANCH,CLIENT_ID)
	       .From(
	           Select(UID.As("FILTER"))
	           .From(COMMITS)
	           .Where(f)
	           .OrderBy(Descending(DT))
	           .Limit(f.offset, f.limit)
	           .AsTable("FILTER_TABLE")
	       )
	       .InnerJoin(COMMITS).On(SqlId("FILTER")==UID)
	       .LeftJoin(RESULT).On(CMT_UID == UID)
	       .LeftJoin(CLIENT).On(ID == CLIENT_ID)
	       .OrderBy(Descending(DT));
	VectorMap<Tuple2<String, int>,ValueMap> rows;
	SortedIndex<int> clients;
	VectorMap<String, ValueMap> commits;
	ValueArray v_clients;
	ValueMap v_commits;
	ValueMap vm;
	while (SQLR.Fetch(vm)){
		SetComputedAttributes(vm);
		String uid = vm["UID"];
		int cid = vm["CLIENT_ID"];
		rows.Add(MakeTuple(uid, cid), vm);
		clients.FindAdd(cid);
		ValueMap& commit = commits.GetAdd(uid);
		commit.Set("CMT", vm["CMT"]);
		commit.Set("BRANCH", vm["BRANCH"]);
	}
	ValueMap results;
	for(int i = 0; i<commits.GetCount() ; ++i){
		v_commits.Add(commits.GetKey(i), commits[i]);
		vm.Clear();
		for(int j = 0; j < clients.GetCount(); ++j){
			if(!IsNull(clients[j]))
				vm.Add(clients[j], rows.GetAdd(MakeTuple(commits.GetKey(i), clients[j])));
		}
		results.Add(commits.GetKey(i), vm);
	}
	for(int i = (!clients.IsEmpty() && IsNull(clients[0]))?1:0; i < clients.GetCount(); i++)
		v_clients.Add(clients[i]);
	ValueMap res;
	res.Set("RESULTS", results);
	res.Set("COMMITS", v_commits);
	res.Set("CLIENTS", v_clients);
	res.Set("ALLCLIENTS", Client::LoadAll());
	return res;
}
Example #3
0
ValueMap Branch::LoadAll() {
	SQL * Select(BRANCH,
	             SqlFunc("COUNT",Distinct(UID)).As("CMT_CNT"),
	             SqlMin(DT).As("FIRST"),
	             SqlMax(DT).As("LAST"),
	             SqlSum(OK).As("OK"),
	             SqlSum(FAIL).As("FAIL"),
	             SqlSum(ERR).As("ERR"),
	             SqlSum(SKIP).As("SKIP"))
	      .From(COMMITS)
	      .LeftJoin(RESULT).On(UID == CMT_UID)
	      .GroupBy(BRANCH)
	      .OrderBy(BRANCH);
	ValueMap vm;
	ValueMap branches;
	while(SQL.Fetch(vm)) {
		SetComputedAttributes(vm, WD_DONE);
		branches.Set(vm["BRANCH"],vm);
	}
	return branches;
}