From aaaf7da7d0dc850f9b7f535a0e220030ab88ef7d Mon Sep 17 00:00:00 2001 From: liuzx Date: Tue, 8 Mar 2022 18:04:28 +0800 Subject: [PATCH 1/2] update --- models/attachment.go | 24 ++++-- models/dataset.go | 6 ++ routers/repo/dataset.go | 134 ++++++++++++++++++++++++++++++- routers/routes/routes.go | 5 +- templates/repo/datasets/tasks/index.tmpl | 0 5 files changed, 158 insertions(+), 11 deletions(-) delete mode 100644 templates/repo/datasets/tasks/index.tmpl diff --git a/models/attachment.go b/models/attachment.go index d482a9018..5179c0170 100755 --- a/models/attachment.go +++ b/models/attachment.go @@ -63,9 +63,12 @@ type AttachmentInfo struct { type AttachmentsOptions struct { ListOptions - DatasetID int8 + DatasetIDs []int64 DecompressState int Type int + UploaderID int64 + NeedIsPrivate bool + IsPrivate bool NeedRepoInfo bool } @@ -524,27 +527,34 @@ func Attachments(opts *AttachmentsOptions) ([]*AttachmentInfo, int64, error) { defer sess.Close() var cond = builder.NewCond() - if opts.DatasetID > 0 { + + if len(opts.DatasetIDs) > 0 { cond = cond.And( - builder.Eq{"attachment.dataset_id": opts.DatasetID}, + builder.In("attachment.dataset_id", opts.DatasetIDs), ) } - if opts.DecompressState > 0 { + if opts.UploaderID > 0 { cond = cond.And( - builder.Eq{"attachment.decompress_state": opts.DecompressState}, + builder.Eq{"attachment.uploader_id": opts.UploaderID}, ) } if (opts.Type) >= 0 { cond = cond.And( - builder.Eq{"cloudbrain.type": opts.Type}, + builder.Eq{"attachment.type": opts.Type}, + ) + } + + if opts.NeedIsPrivate { + cond = cond.And( + builder.Eq{"attachment.is_private": opts.IsPrivate}, ) } var count int64 var err error - if opts.DatasetID > 0 { + if (opts.Type) >= 0 { count, err = sess.Where(cond).Count(new(Attachment)) } diff --git a/models/dataset.go b/models/dataset.go index 096ab291c..f4482630a 100755 --- a/models/dataset.go +++ b/models/dataset.go @@ -329,6 +329,12 @@ func GetDatasetByRepo(repo *Repository) (*Dataset, error) { } } +func GetDatasetStarByUser(user *User) ([]*DatasetStar, error) { + datasetStars := make([]*DatasetStar, 0) + err := x.Cols("id", "uid", "DatasetID", "CreatedUnix").Where("uid=?", user.ID).Find(&datasetStars) + return datasetStars, err +} + func DeleteDataset(datasetID int64, uid int64) error { var err error sess := x.NewSession() diff --git a/routers/repo/dataset.go b/routers/repo/dataset.go index 7b3625d49..d4e12ab8f 100755 --- a/routers/repo/dataset.go +++ b/routers/repo/dataset.go @@ -283,16 +283,144 @@ func DatasetAction(ctx *context.Context) { } -func TasksDatasetIndex(ctx *context.Context) { +func CurrentRepoDataset(ctx *context.Context) { page := ctx.QueryInt("page") - // repo := ctx.Repo.Repository + cloudbrainType := ctx.QueryInt("type") + repo := ctx.Repo.Repository + var datasetIDs []int64 + dataset, err := models.GetDatasetByRepo(repo) + if err != nil { + ctx.JSON(http.StatusOK, models.BaseErrorMessage(ctx.Tr("GetDatasetByRepo failed", err))) + } + datasetIDs = append(datasetIDs, dataset.ID) + uploaderID := ctx.User.ID + datasets, count, err := models.Attachments(&models.AttachmentsOptions{ + ListOptions: models.ListOptions{ + Page: page, + PageSize: setting.UI.IssuePagingNum, + }, + DatasetIDs: datasetIDs, + UploaderID: uploaderID, + Type: cloudbrainType, + NeedIsPrivate: false, + NeedRepoInfo: true, + }) + if err != nil { + ctx.ServerError("datasets", err) + return + } + + data, err := json.Marshal(datasets) + if err != nil { + log.Error("json.Marshal failed:", err.Error()) + ctx.JSON(200, map[string]string{ + "result_code": "-1", + "error_msg": err.Error(), + "data": "", + }) + return + } + ctx.JSON(200, map[string]string{ + "data": string(data), + "count": strconv.FormatInt(count, 10), + }) +} + +func MyDataset(ctx *context.Context) { + page := ctx.QueryInt("page") + cloudbrainType := ctx.QueryInt("type") + + uploaderID := ctx.User.ID + datasets, count, err := models.Attachments(&models.AttachmentsOptions{ + ListOptions: models.ListOptions{ + Page: page, + PageSize: setting.UI.IssuePagingNum, + }, + UploaderID: uploaderID, + Type: cloudbrainType, + NeedIsPrivate: false, + NeedRepoInfo: true, + }) + if err != nil { + ctx.ServerError("datasets", err) + return + } + + data, err := json.Marshal(datasets) + if err != nil { + log.Error("json.Marshal failed:", err.Error()) + ctx.JSON(200, map[string]string{ + "result_code": "-1", + "error_msg": err.Error(), + "data": "", + }) + return + } + ctx.JSON(200, map[string]string{ + "data": string(data), + "count": strconv.FormatInt(count, 10), + }) +} + +func PublicDataset(ctx *context.Context) { + page := ctx.QueryInt("page") + cloudbrainType := ctx.QueryInt("type") + + datasets, count, err := models.Attachments(&models.AttachmentsOptions{ + ListOptions: models.ListOptions{ + Page: page, + PageSize: setting.UI.IssuePagingNum, + }, + NeedIsPrivate: true, + IsPrivate: false, + Type: cloudbrainType, + NeedRepoInfo: true, + }) + if err != nil { + ctx.ServerError("datasets", err) + return + } + + data, err := json.Marshal(datasets) + if err != nil { + log.Error("json.Marshal failed:", err.Error()) + ctx.JSON(200, map[string]string{ + "result_code": "-1", + "error_msg": err.Error(), + "data": "", + }) + return + } + ctx.JSON(200, map[string]string{ + "data": string(data), + "count": strconv.FormatInt(count, 10), + }) +} + +func MyFavoriteDataset(ctx *context.Context) { + page := ctx.QueryInt("page") + cloudbrainType := ctx.QueryInt("type") + + var datasetIDs []int64 + + datasetStars, err := models.GetDatasetStarByUser(ctx.User) + if err != nil { + ctx.JSON(http.StatusOK, models.BaseErrorMessage(ctx.Tr("GetDatasetByRepo failed", err))) + } + for i, _ := range datasetStars { + datasetIDs = append(datasetIDs, datasetStars[i].DatasetID) + } datasets, count, err := models.Attachments(&models.AttachmentsOptions{ ListOptions: models.ListOptions{ Page: page, PageSize: setting.UI.IssuePagingNum, }, - Type: models.TypeCloudBrainTwo, + DatasetIDs: datasetIDs, + NeedIsPrivate: true, + IsPrivate: false, + Type: cloudbrainType, + NeedRepoInfo: true, }) if err != nil { ctx.ServerError("datasets", err) diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 84d01cdb1..8c03824e3 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -985,7 +985,10 @@ func RegisterRoutes(m *macaron.Macaron) { m.Post("/create", reqRepoDatasetWriter, bindIgnErr(auth.CreateDatasetForm{}), repo.CreateDatasetPost) m.Get("/edit/:id", reqRepoDatasetWriter, repo.EditDataset) m.Post("/edit", reqRepoDatasetWriter, bindIgnErr(auth.EditDatasetForm{}), repo.EditDatasetPost) - m.Get("/tasks", reqRepoDatasetReader, repo.TasksDatasetIndex) + m.Get("/current_repo", reqRepoDatasetReader, repo.CurrentRepoDataset) + m.Get("/my_datasets", reqRepoDatasetReader, repo.MyDataset) + m.Get("/public_datasets", reqRepoDatasetReader, repo.PublicDataset) + m.Get("/my_favorite", reqRepoDatasetReader, repo.MyFavoriteDataset) m.Group("/dirs", func() { m.Get("/:uuid", reqRepoDatasetReader, repo.DirIndex) diff --git a/templates/repo/datasets/tasks/index.tmpl b/templates/repo/datasets/tasks/index.tmpl deleted file mode 100644 index e69de29bb..000000000 From fbe28851c1688912fee75b0637a5b09eafefb4ce Mon Sep 17 00:00:00 2001 From: ychao_1983 Date: Wed, 9 Mar 2022 09:27:13 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routers/repo/attachment.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/routers/repo/attachment.go b/routers/repo/attachment.go index 96cce5cd0..8254ccc67 100755 --- a/routers/repo/attachment.go +++ b/routers/repo/attachment.go @@ -814,6 +814,9 @@ func CompleteMultipart(ctx *context.Context) { typeCloudBrain := ctx.QueryInt("type") fileName := ctx.Query("file_name") + log.Warn("uuid:" + uuid) + log.Warn("typeCloudBrain:" + strconv.Itoa(typeCloudBrain)) + err := checkTypeCloudBrain(typeCloudBrain) if err != nil { ctx.ServerError("checkTypeCloudBrain failed", err) @@ -852,6 +855,7 @@ func CompleteMultipart(ctx *context.Context) { return } dataset, _ := models.GetDatasetByID(ctx.QueryInt64("dataset_id")) + log.Warn("insert attachment to datasetId:" + strconv.FormatInt(dataset.ID, 10)) attachment, err := models.InsertAttachment(&models.Attachment{ UUID: uuid, UploaderID: ctx.User.ID,