You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

repo_summary_statistic.go 3.6 kB

3 years ago
3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package repo
  2. import (
  3. "time"
  4. "code.gitea.io/gitea/models"
  5. "code.gitea.io/gitea/modules/log"
  6. )
  7. func SummaryStatistic() {
  8. log.Info("Generate summary statistic begin")
  9. yesterday := time.Now().AddDate(0, 0, -1).Format("2006-01-02")
  10. SummaryStatisticDaily(yesterday)
  11. log.Info("Generate summary statistic end")
  12. }
  13. func SummaryStatisticDaily(date string) {
  14. log.Info("%s", date)
  15. if err := models.DeleteSummaryStatisticDaily(date); err != nil {
  16. log.Error("DeleteRepoStatDaily failed: %v", err.Error())
  17. return
  18. }
  19. //user number
  20. userNumber, err := models.GetUsersCount()
  21. if err != nil {
  22. log.Error("can not get user number", err)
  23. userNumber = 0
  24. }
  25. //organization number
  26. organizationNumber, err := models.GetOrganizationsCount()
  27. if err != nil {
  28. log.Error("can not get orgnazition number", err)
  29. organizationNumber = 0
  30. }
  31. // repository number
  32. repositoryNumer, err := models.GetAllRepositoriesCount()
  33. if err != nil {
  34. log.Error("can not get repository number", err)
  35. repositoryNumer = 0
  36. }
  37. publicRepositoryNumer, err := models.GetAllPublicRepositoriesCount()
  38. if err != nil {
  39. log.Error("can not get public repository number", err)
  40. publicRepositoryNumer = 0
  41. }
  42. privateRepositoryNumer := repositoryNumer - publicRepositoryNumer
  43. mirrorRepositoryNumber, err := models.GetAllMirrorRepositoriesCount()
  44. if err != nil {
  45. log.Error("can not get mirror repository number", err)
  46. mirrorRepositoryNumber = 0
  47. }
  48. forkRepositoryNumber, err := models.GetAllForkRepositoriesCount()
  49. if err != nil {
  50. log.Error("can not get fork mirror repository number", err)
  51. forkRepositoryNumber = 0
  52. }
  53. selfRepositoryNumber := repositoryNumer - mirrorRepositoryNumber - forkRepositoryNumber
  54. organizationRepoNumber, err := models.GetAllOrgRepositoriesCount()
  55. if err != nil {
  56. log.Error("can not get org repository number", err)
  57. organizationRepoNumber = 0
  58. }
  59. //repository size
  60. repositorySize, err := models.GetAllRepositoriesSize()
  61. if err != nil {
  62. log.Error("can not get repository size", err)
  63. repositorySize = 0
  64. }
  65. // dataset size
  66. allDatasetSize, err := models.GetAllAttachmentSize()
  67. if err != nil {
  68. log.Error("can not get dataset size", err)
  69. allDatasetSize = 0
  70. }
  71. //topic repo number
  72. topics, err := models.GetAllUsedTopics()
  73. if err != nil {
  74. log.Error("can not get topics", err)
  75. }
  76. var topicsCount [11]int
  77. for _, topic := range topics {
  78. index, exists := models.DomainMap[topic.Name]
  79. if exists {
  80. topicsCount[index] = topic.RepoCount
  81. }
  82. }
  83. summaryStat := models.SummaryStatistic{
  84. Date: date,
  85. NumUsers: userNumber,
  86. RepoSize: repositorySize,
  87. DatasetSize: allDatasetSize,
  88. NumOrganizations: organizationNumber,
  89. NumRepos: repositoryNumer,
  90. NumRepoFork: forkRepositoryNumber,
  91. NumRepoMirror: mirrorRepositoryNumber,
  92. NumRepoPrivate: privateRepositoryNumer,
  93. NumRepoPublic: publicRepositoryNumer,
  94. NumRepoSelf: selfRepositoryNumber,
  95. NumRepoOrg: organizationRepoNumber,
  96. NumRepoBigModel: topicsCount[0],
  97. NumRepoAI: topicsCount[1],
  98. NumRepoVision: topicsCount[2],
  99. NumRepoNLP: topicsCount[3],
  100. NumRepoML: topicsCount[4],
  101. NumRepoNN: topicsCount[5],
  102. NumRepoAutoDrive: topicsCount[6],
  103. NumRepoRobot: topicsCount[7],
  104. NumRepoLeagueLearn: topicsCount[8],
  105. NumRepoDataMining: topicsCount[9],
  106. NumRepoRISC: topicsCount[10],
  107. }
  108. if _, err = models.InsertSummaryStatistic(&summaryStat); err != nil {
  109. log.Error("Insert summary Stat failed: %v", err.Error())
  110. }
  111. log.Info("finish summary statistic")
  112. }