Metrics and logs - MongoDB Submission (#43)
Adds MongoDB-backed submission for survey statistics/metrics and introduces MongoDB ObjectID-based participant/task identifiers to support upserts and linking metrics to a participant. It introduces breaking changes to the exsisting json stat and metric files. Delete the old ones Changes: Add internal/storage/MongoStorage and wire pm survey submit / pm start to submit local .pm/*.json files to MongoDB. Extend stats/metrics models to include MongoDB _id / participant_id fields and add participant ID propagation into task metrics. Update app initialization to generate ObjectIDs for new participants and expose GetParticipantID() via StatsService.
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
||||
|
||||
"github.com/LazyBachelor/LazyPM/internal/models"
|
||||
"github.com/LazyBachelor/LazyPM/internal/storage"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type StatisticsService struct {
|
||||
@@ -42,6 +43,16 @@ func (s *StatisticsService) GetStatistics() (models.Statistics, error) {
|
||||
return *s.storage.Data, nil
|
||||
}
|
||||
|
||||
func (s *StatisticsService) GetParticipantID() primitive.ObjectID {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
|
||||
if s.storage.Data == nil {
|
||||
return primitive.NilObjectID
|
||||
}
|
||||
return s.storage.Data.ID
|
||||
}
|
||||
|
||||
func (s *StatisticsService) RecordTaskRun(ctx context.Context, run models.TaskRunMetrics) error {
|
||||
_ = ctx
|
||||
|
||||
@@ -63,8 +74,8 @@ func (s *StatisticsService) RecordTaskRun(ctx context.Context, run models.TaskRu
|
||||
}
|
||||
|
||||
stats.EndTime = now
|
||||
stats.Duration = stats.EndTime.Sub(stats.StartTime)
|
||||
stats.InterfaceType = run.InterfaceType
|
||||
stats.DurationMs = stats.EndTime.Sub(stats.StartTime).Milliseconds()
|
||||
stats.LastInterfaceType = run.InterfaceType
|
||||
|
||||
stats.TaskRuns++
|
||||
stats.LastTaskName = run.TaskName
|
||||
|
||||
Reference in New Issue
Block a user