@@ -1,6 +1,7 @@
package repo
import (
"code.gitea.io/gitea/modules/repository"
"time"
"code.gitea.io/gitea/models"
@@ -8,12 +9,15 @@ import (
)
//auto daily or manually
func RepoStatisticDaily() {
//delete all yesterday
func RepoStatisticAuto() {
log.Info("", time.Now())
yesterday := time.Now().AddDate(0, 0, -1)
log.Info("", yesterday)
if err := models.DeleteRepoStatDaily(yesterday); err != nil {
yesterday := time.Now().AddDate(0, 0, -1).Format("2006-01-02")
RepoStatisticDaily(yesterday)
}
func RepoStatisticDaily(date string) {
log.Info("%s", date)
if err := models.DeleteRepoStatDaily(date); err != nil {
log.Error("DeleteRepoStatDaily failed: %v", err.Error())
return
}
@@ -52,28 +56,38 @@ func RepoStatisticDaily() {
continue
}
repoStat := models.RepoStatistic{
RepoID: repo.ID,
Date:yesterday,
NumWatches:int64(repo.NumWatches),
NumStars:int64(repo.NumStars),
NumDownloads:repo.CloneCnt,
NumComments:0,
NumVisits:0,
NumClosedIssues:int64(repo.NumClosedIssues),
NumVersions:numVersions,
NumDevMonths:repoGitStat.DevelopAge,
RepoSize:repo.Size,
DatasetSize:datasetSize,
NumModels:0,
NumWikiViews:0,
NumCommits:repo.NumCommit,
NumIssues:int64(repo.NumIssues),
NumPulls:int64(repo.NumPulls),
IssueFixedRate:issueFixedRate,
NumContributor:repoGitStat.Contributors,
NumKeyContributor:repoGitStat.KeyContributors,
numComments, err := models.GetCommentCountByRepoID(repo.ID)
if err != nil {
log.Error("GetCommentCountByRepoID failed: %s", repo.Name)
log.Error("failed statistic: %s", repo.Name)
continue
}
log.Info("%s", repo.OwnerName)
beginTime, endTime := getStatTime(date)
numVisits := repository.AppointProjectView(repo.OwnerName, repo.Name, beginTime, endTime)
repoStat := models.RepoStatistic{
RepoID: repo.ID,
Date: date,
NumWatches: int64(repo.NumWatches),
NumStars: int64(repo.NumStars),
NumDownloads: repo.CloneCnt,
NumComments: numComments,
NumVisits: int64(numVisits),
NumClosedIssues: int64(repo.NumClosedIssues),
NumVersions: numVersions,
NumDevMonths: repoGitStat.DevelopAge,
RepoSize: repo.Size,
DatasetSize: datasetSize,
NumModels: 0,
NumWikiViews: repoGitStat.WikiPages,
NumCommits: repo.NumCommit,
NumIssues: int64(repo.NumIssues),
NumPulls: int64(repo.NumPulls),
IssueFixedRate: issueFixedRate,
NumContributor: repoGitStat.Contributors,
NumKeyContributor: repoGitStat.KeyContributors,
}
if _, err = models.InsertRepoStat(&repoStat); err != nil {
@@ -95,3 +109,15 @@ func getDatasetSize(repo *models.Repository) (int64, error) {
return models.GetAttachmentSizeByDatasetID(dataset.ID)
}
func getStatTime(timeStr string) (string, string) {
t, _ := time.Parse("2006-01-02", timeStr)
timeNumber := t.Unix()
beginTimeNumber := timeNumber - 8*60*60
endTimeNumber := timeNumber + 16*60*60
beginTime := time.Unix(beginTimeNumber, 0).Format(time.RFC3339)
endTime := time.Unix(endTimeNumber, 0).Format(time.RFC3339)
log.Info("%s, %s", beginTime, endTime)
return beginTime, endTime
}