mirror of
https://onedev.site.tesses.net/crosslang/crosslangextras
synced 2026-02-08 17:15:45 +00:00
Add filter to package server and fix templates for devstudio
This commit is contained in:
@@ -149,10 +149,11 @@ func DB.UploadPackage(userId, filePath)
|
||||
|
||||
return {Success=true};
|
||||
}
|
||||
func DB.QueryPackages(q, offset, limit,$account)
|
||||
func DB.QueryPackages(q, offset, limit,$account,$filter)
|
||||
{
|
||||
if(TypeOf(offset) != "Long") offset = 0;
|
||||
if(TypeOf(limit) != "Long") limit = 20;
|
||||
if(TypeOf(filter) != "String") var filter = "";
|
||||
var q2 = Sqlite.Escape($"%{q}%");
|
||||
|
||||
var accountId = -1;
|
||||
@@ -173,7 +174,7 @@ func DB.QueryPackages(q, offset, limit,$account)
|
||||
}
|
||||
}
|
||||
|
||||
var sql = accountId > -1 ? $"SELECT * FROM packages p inner join versions v on p.id = v.packageId and (p.packageName LIKE {q2} OR v.description LIKE {q2}) and v.version = (SELECT MAX(version) FROM versions WHERE packageId = v.packageId) INNER JOIN accounts a on a.id = p.accountId WHERE p.accountId == {accountId} LIMIT {limit} OFFSET {offset};" : $"SELECT * FROM packages p inner join versions v on p.id = v.packageId and (p.packageName LIKE {q2} OR v.description LIKE {q2}) and v.version = (SELECT MAX(version) FROM versions WHERE packageId = v.packageId) INNER JOIN accounts a on a.id = p.accountId LIMIT {limit} OFFSET {offset};";
|
||||
var sql = accountId > -1 ? $"SELECT * FROM packages p inner join versions v on p.id = v.packageId{filter} and (p.packageName LIKE {q2} OR v.description LIKE {q2}) and v.version = (SELECT MAX(version) FROM versions WHERE packageId = v.packageId) INNER JOIN accounts a on a.id = p.accountId WHERE p.accountId == {accountId} LIMIT {limit} OFFSET {offset};" : $"SELECT * FROM packages p inner join versions v on p.id = v.packageId and (p.packageName LIKE {q2} OR v.description LIKE {q2}) and v.version = (SELECT MAX(version) FROM versions WHERE packageId = v.packageId) INNER JOIN accounts a on a.id = p.accountId LIMIT {limit} OFFSET {offset};";
|
||||
DB.Lock();
|
||||
var dbCon = DB.Open();
|
||||
var res = Sqlite.Exec(dbCon, sql);
|
||||
|
||||
@@ -71,6 +71,26 @@ func main(args)
|
||||
}
|
||||
if(ctx.Path == "/api/v1/search")
|
||||
{
|
||||
var filter = ctx.QueryParams.TryGetFirst("filter");
|
||||
if(TypeOf(filter) != "String") filter = "";
|
||||
var filters = filter.Length > 0 filter.Split(",") : [];
|
||||
|
||||
if(filters.Length > 0)
|
||||
{
|
||||
filter = " and (";
|
||||
var first = true;
|
||||
each(var item : filters)
|
||||
{
|
||||
if(!first) {
|
||||
filter += " OR ";
|
||||
}
|
||||
filter += $"v.type = {Sqlite.Escape(item)}";
|
||||
first=false;
|
||||
}
|
||||
filter += ")";
|
||||
}
|
||||
|
||||
|
||||
var q = ctx.QueryParams.TryGetFirst("q");
|
||||
if(TypeOf(q) != "String") q = "";
|
||||
var offset = ParseLong(ctx.QueryParams.TryGetFirst("offset"));
|
||||
@@ -79,7 +99,7 @@ func main(args)
|
||||
if(TypeOf(limit) != "Long") limit = 20;
|
||||
if(limit <= 0) limit = 20;
|
||||
|
||||
var res = DB.QueryPackages(q, offset*limit, limit);
|
||||
var res = DB.QueryPackages(q, offset*limit, limit, undefined, filter);
|
||||
if(TypeOf(res) != "List")
|
||||
{
|
||||
ctx.StatusCode=500;
|
||||
|
||||
Reference in New Issue
Block a user