40 lines
880 B
Go
40 lines
880 B
Go
package pg
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
|
|
"gorm.io/gorm"
|
|
|
|
"github.com/chaitin/panda-wiki/domain"
|
|
"github.com/chaitin/panda-wiki/utils"
|
|
)
|
|
|
|
func (r *NodeRepository) GetNodeStatsByNodeId(ctx context.Context, nodeId string) (*domain.NodeStats, error) {
|
|
var nodeStats *domain.NodeStats
|
|
if err := r.db.WithContext(ctx).
|
|
Model(&domain.NodeStats{}).
|
|
Where("node_id = ?", nodeId).
|
|
First(&nodeStats).Error; err != nil {
|
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
nodeStats = &domain.NodeStats{
|
|
ID: 0,
|
|
NodeID: nodeId,
|
|
PV: 0,
|
|
}
|
|
} else {
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
var todayStats int64
|
|
if err := r.db.WithContext(ctx).Model(&domain.StatPage{}).
|
|
Where("created_at >= ?", utils.GetTimeHourOffset(-24)).
|
|
Where("node_id = ?", nodeId).Count(&todayStats).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
nodeStats.PV += todayStats
|
|
|
|
return nodeStats, nil
|
|
}
|