From 08805d42a12ea74c2b47ebdd15fe92dc88dc7ae1 Mon Sep 17 00:00:00 2001 From: zouap Date: Thu, 23 Dec 2021 16:05:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- models/dbsql/dataset_foreigntable_for_es.sql | 1 + models/dbsql/repo_foreigntable_for_es.sql | 8 +-- modules/setting/setting.go | 2 + routers/home.go | 51 ++++++++++++++++---- routers/search.go | 30 ++++++++++++ 5 files changed, 79 insertions(+), 13 deletions(-) create mode 100644 routers/search.go diff --git a/models/dbsql/dataset_foreigntable_for_es.sql b/models/dbsql/dataset_foreigntable_for_es.sql index 9e1e886b6..13bb88e2f 100644 --- a/models/dbsql/dataset_foreigntable_for_es.sql +++ b/models/dbsql/dataset_foreigntable_for_es.sql @@ -120,6 +120,7 @@ $def$ SET description=NEW.description, title=NEW.title, category=NEW.category, + download_times=NEW.download_times, file_name=(select array_to_string(array_agg(name order by created_unix desc),',') from public.attachment where dataset_id=NEW.id) where id=NEW.id; return new; diff --git a/models/dbsql/repo_foreigntable_for_es.sql b/models/dbsql/repo_foreigntable_for_es.sql index 027a7de76..a1e5a877e 100644 --- a/models/dbsql/repo_foreigntable_for_es.sql +++ b/models/dbsql/repo_foreigntable_for_es.sql @@ -1,4 +1,4 @@ -drop FOREIGN table if exists public.repository_es; +DROP FOREIGN table if exists public.repository_es; CREATE FOREIGN TABLE public.repository_es ( id bigint NOT NULL, owner_id bigint, @@ -95,7 +95,7 @@ delete from public.repository_es; balance, clone_cnt, num_commit, - git_clone_cnt) + git_clone_cnt,lang) SELECT id, owner_id, @@ -137,8 +137,8 @@ delete from public.repository_es; balance, clone_cnt, num_commit, - git_clone_cnt - FROM public.repository; + git_clone_cnt,(select string_agg(language, ',') from public.language_stat a where a.repo_id=b.id) + FROM public.repository b; CREATE OR REPLACE FUNCTION public.insert_repository_data() RETURNS trigger AS diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 2d70e47b1..ae83b9a9c 100755 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -436,6 +436,8 @@ var ( //home page RecommentRepoAddr string + ESSearchURL string + //labelsystem config LabelTaskName string LabelDatasetDeleteQueue string diff --git a/routers/home.go b/routers/home.go index 3262aa823..b430a7af1 100755 --- a/routers/home.go +++ b/routers/home.go @@ -513,24 +513,37 @@ func NotFound(ctx *context.Context) { ctx.Data["Title"] = "Page Not Found" ctx.NotFound("home.NotFound", nil) } + func RecommendOrgFromPromote(ctx *context.Context) { url := setting.RecommentRepoAddr + "organizations" - recommendFromPromote(ctx, url) + result, err := recommendFromPromote(url) + if err != nil { + ctx.ServerError("500", err) + return + } + resultOrg := make([]*models.User, 0) + for i, userName := range result { + user, err := models.GetUserByName(userName) + if err == nil { + resultOrg[i] = user + } else { + log.Info("query user error," + err.Error()) + } + } + ctx.JSON(200, resultOrg) } -func recommendFromPromote(ctx *context.Context, url string) []string { +func recommendFromPromote(url string) ([]string, error) { resp, err := http.Get(url) if err != nil { log.Info("Get organizations url error=" + err.Error()) - ctx.ServerError("Get organizations url error:", err) - return nil + return nil, err } bytes, err := ioutil.ReadAll(resp.Body) resp.Body.Close() if err != nil { log.Info("Get organizations url error=" + err.Error()) - ctx.ServerError("Read organizations url error:", err) - return nil + return nil, err } allLineStr := string(bytes) @@ -546,11 +559,31 @@ func recommendFromPromote(ctx *context.Context, url string) []string { result[i] = strings.Trim(line[tmpIndex+1:], " ") } } - return result + return result, nil } func RecommendRepoFromPromote(ctx *context.Context) { url := setting.RecommentRepoAddr + "projects" - recommendFromPromote(ctx, url) - + result, err := recommendFromPromote(url) + if err != nil { + ctx.ServerError("500", err) + return + } + resultRepo := make([]*models.Repository, 0) + for i, repoName := range result { + tmpIndex := strings.Index(repoName, ".") + if tmpIndex == -1 { + log.Info("error repo name format.") + } else { + ownerName := repoName[0:tmpIndex] + repoName := repoName[tmpIndex+1:] + repo, err := models.GetRepositoryByOwnerAndName(ownerName, repoName) + if err == nil { + resultRepo[i] = repo + } else { + log.Info("query repo error," + err.Error()) + } + } + } + ctx.JSON(200, resultRepo) } diff --git a/routers/search.go b/routers/search.go new file mode 100644 index 000000000..37665c961 --- /dev/null +++ b/routers/search.go @@ -0,0 +1,30 @@ +package routers + +import ( + "code.gitea.io/gitea/modules/context" +) + +type Table struct { + TableName string + SpecifyField string + SortBy string + Where string +} + +type SearchOptions struct { + Page int64 + PageSize int64 + Key string + SearchObj []Table +} + +func Search(ctx *context.Context) { + // TableName := ctx.Query("TableName") + // Key := ctx.Query("Key") + // SortBy := ctx.Query("SortBy") + // Page := ctx.QueryInt64("Page") + // PageSize := ctx.QueryInt64("PageSize") + + // ESSearchUrl := setting.RecommentRepoAddr + +}