feat: implement system statistics tracking, commit management controllers, and associated database migrations
All checks were successful
Build and Release / release (push) Successful in 1m49s
All checks were successful
Build and Release / release (push) Successful in 1m49s
This commit is contained in:
66
internal/models/statistic.go
Normal file
66
internal/models/statistic.go
Normal file
@@ -0,0 +1,66 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"history-api/internal/dtos/response"
|
||||
"time"
|
||||
)
|
||||
|
||||
type StatisticEntity struct {
|
||||
ID string `json:"id"`
|
||||
Date time.Time `json:"date"`
|
||||
TotalUsers int32 `json:"total_users"`
|
||||
TotalProjects int32 `json:"total_projects"`
|
||||
TotalCommits int32 `json:"total_commits"`
|
||||
TotalSubmissions int32 `json:"total_submissions"`
|
||||
TotalMedias int32 `json:"total_medias"`
|
||||
TotalWikis int32 `json:"total_wikis"`
|
||||
TotalEntities int32 `json:"total_entities"`
|
||||
TotalGeometries int32 `json:"total_geometries"`
|
||||
TotalStorageBytes int64 `json:"total_storage_bytes"`
|
||||
NewUsers int32 `json:"new_users"`
|
||||
NewProjects int32 `json:"new_projects"`
|
||||
NewCommits int32 `json:"new_commits"`
|
||||
NewSubmissions int32 `json:"new_submissions"`
|
||||
NewMedias int32 `json:"new_medias"`
|
||||
NewWikis int32 `json:"new_wikis"`
|
||||
NewEntities int32 `json:"new_entities"`
|
||||
NewGeometries int32 `json:"new_geometries"`
|
||||
NewStorageBytes int64 `json:"new_storage_bytes"`
|
||||
CreatedAt *time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
func (e *StatisticEntity) ToResponse() *response.StatisticResponse {
|
||||
if e == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
dateStr := e.Date.Format("2006-01-02")
|
||||
var createdAt time.Time
|
||||
if e.CreatedAt != nil {
|
||||
createdAt = *e.CreatedAt
|
||||
}
|
||||
|
||||
return &response.StatisticResponse{
|
||||
ID: e.ID,
|
||||
Date: dateStr,
|
||||
TotalUsers: e.TotalUsers,
|
||||
TotalProjects: e.TotalProjects,
|
||||
TotalCommits: e.TotalCommits,
|
||||
TotalSubmissions: e.TotalSubmissions,
|
||||
TotalMedias: e.TotalMedias,
|
||||
TotalWikis: e.TotalWikis,
|
||||
TotalEntities: e.TotalEntities,
|
||||
TotalGeometries: e.TotalGeometries,
|
||||
TotalStorageBytes: e.TotalStorageBytes,
|
||||
NewUsers: e.NewUsers,
|
||||
NewProjects: e.NewProjects,
|
||||
NewCommits: e.NewCommits,
|
||||
NewSubmissions: e.NewSubmissions,
|
||||
NewMedias: e.NewMedias,
|
||||
NewWikis: e.NewWikis,
|
||||
NewEntities: e.NewEntities,
|
||||
NewGeometries: e.NewGeometries,
|
||||
NewStorageBytes: e.NewStorageBytes,
|
||||
CreatedAt: createdAt,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user