|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- package repo
-
- import (
- "net/http"
- "net/url"
-
- "code.gitea.io/gitea/models"
- "code.gitea.io/gitea/modules/context"
- "code.gitea.io/gitea/modules/log"
- "github.com/360EntSecGroup-Skylar/excelize/v2"
- )
-
- type CloudbrainsPeriodData struct {
- DebugOneCount int64 `json:"debugOneCount"`
- BenchmarkOneCount int64 `json:"benchmarkOneCount"`
- DebugTwoCount int64 `json:"debugTwoCount"`
- TrainTwoCount int64 `json:"trainTwoCount"`
- InferenceTwoCount int64 `json:"inferenceTwoCount"`
- }
-
- func GetAllCloudbrainsPeriodStatistics(ctx *context.Context) {
-
- recordBeginTime, err := getRecordBeginTime()
- if err != nil {
- log.Error("Can not get record begin time", err)
- ctx.Error(http.StatusBadRequest, ctx.Tr("repo.record_begintime_get_err"))
- return
- }
- beginTime, endTime, err := getTimePeroid(ctx, recordBeginTime)
- if err != nil {
- log.Error("Parameter is wrong", err)
- ctx.Error(http.StatusBadRequest, ctx.Tr("repo.parameter_is_wrong"))
- return
- }
- page := ctx.QueryInt("page")
- if page <= 0 {
- page = 1
- }
- pageSize := ctx.QueryInt("pagesize")
- if pageSize <= 0 {
- pageSize = DEFAULT_PAGE_SIZE
- }
-
- debugOneCount, err := models.GenerateDebugOneCount(beginTime, endTime)
- if err != nil {
- log.Error("Can not query debugOneCount.", err)
- ctx.Error(http.StatusBadRequest, ctx.Tr("debugOneCount_get_error"))
- return
- }
- benchmarkOneCount, err := models.GenerateBenchmarkOneCount(beginTime, endTime)
- if err != nil {
- log.Error("Can not query benchmarkCount.", err)
- ctx.Error(http.StatusBadRequest, ctx.Tr("benchmarkOneCount_get_error"))
- return
- }
- debugTwoCount, err := models.GenerateDebugTwoCount(beginTime, endTime)
- if err != nil {
- log.Error("Can not query debugTwoCount.", err)
- ctx.Error(http.StatusBadRequest, ctx.Tr("debugTwoCount_get_error"))
- return
- }
- trainTwoCount, err := models.GenerateTrainTwoCount(beginTime, endTime)
- if err != nil {
- log.Error("Can not query DebugOneTotal count.", err)
- ctx.Error(http.StatusBadRequest, ctx.Tr("total_count_get_error"))
- return
- }
- inferenceTwoCount, err := models.GenerateInferenceTwoCount(beginTime, endTime)
- if err != nil {
- log.Error("Can not query inferenceTwoCount.", err)
- ctx.Error(http.StatusBadRequest, ctx.Tr("inferenceTwoCount_get_error"))
- return
- }
-
- cloudbrainsPeriodData := CloudbrainsPeriodData{
- DebugOneCount: debugOneCount,
- BenchmarkOneCount: benchmarkOneCount,
- DebugTwoCount: debugTwoCount,
- TrainTwoCount: trainTwoCount,
- InferenceTwoCount: inferenceTwoCount,
- }
-
- ctx.JSON(http.StatusOK, cloudbrainsPeriodData)
-
- }
- func ServeCloudbrainPeriodStatisticsFile(ctx *context.Context) {
-
- recordBeginTime, err := getRecordBeginTime()
- if err != nil {
- log.Error("Can not get record begin time", err)
- ctx.Error(http.StatusBadRequest, ctx.Tr("repo.record_begintime_get_err"))
- return
- }
- beginTime, endTime, err := getTimePeroid(ctx, recordBeginTime)
- if err != nil {
- log.Error("Parameter is wrong", err)
- ctx.Error(http.StatusBadRequest, ctx.Tr("repo.parameter_is_wrong"))
- return
- }
- q := ctx.QueryTrim("q")
- page := ctx.QueryInt("page")
- if page <= 0 {
- page = 1
- }
- pageSize := 1000
- orderBy := getOrderBy(ctx)
-
- _, latestDate, err := models.GetRepoStatLastUpdatedTime()
- if err != nil {
- log.Error("Can not query the last updated time.", err)
- ctx.Error(http.StatusBadRequest, ctx.Tr("repo.last_update_time_error"))
- return
- }
-
- countSql := generateCountSql(beginTime, endTime, latestDate, q)
- total, err := models.CountRepoStatByRawSql(countSql)
- if err != nil {
- log.Error("Can not query total count.", err)
- ctx.Error(http.StatusBadRequest, ctx.Tr("repo.total_count_get_error"))
- return
- }
- var projectAnalysis = ctx.Tr("repo.repo_stat_inspect")
- fileName := getFileName(ctx, beginTime, endTime, projectAnalysis)
-
- totalPage := getTotalPage(total, pageSize)
-
- f := excelize.NewFile()
-
- index := f.NewSheet(projectAnalysis)
- f.DeleteSheet("Sheet1")
-
- for k, v := range allProjectsPeroidHeader(ctx) {
- f.SetCellValue(projectAnalysis, k, v)
- }
-
- var row = 2
- for i := 0; i <= totalPage; i++ {
-
- pageRecords := models.GetRepoStatisticByRawSql(generateSqlByType(ctx, beginTime, endTime, latestDate, q, orderBy, i+1, pageSize))
- for _, record := range pageRecords {
-
- for k, v := range allProjectsPeroidValues(row, record, ctx) {
- f.SetCellValue(projectAnalysis, k, v)
- }
- row++
-
- }
-
- }
- f.SetActiveSheet(index)
-
- ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+url.QueryEscape(fileName))
- ctx.Resp.Header().Set("Content-Type", "application/octet-stream")
-
- f.WriteTo(ctx.Resp)
-
- }
|