diff --git a/core/service.go b/core/service.go index f6d3b75..b05db75 100644 --- a/core/service.go +++ b/core/service.go @@ -83,8 +83,9 @@ func (t *trackingService) StartPipeline(cols ...CollectorType) (string, error) { } func (t *trackingService) AllTrackings() ([]TrackingMetadata, error) { - panic("implement me") - return nil, nil + logrus.Info("SERVICE: GET ALL TRACKINGS") + data, err := t.repo.LoadAll() + return data, err } func (t *trackingService) StartRecord() (string, error) { diff --git a/storage/kvstore.go b/storage/kvstore.go index e4ee5e8..3997b9b 100644 --- a/storage/kvstore.go +++ b/storage/kvstore.go @@ -111,76 +111,28 @@ func (r *badgerStore) Save(tr core.Tracking) error { return nil } -//func (r *badgerStore) Save(tracking *core.Tracking) error { -// ts, err := tracking.TimeCreated.MarshalText() -// if err != nil { -// logrus.Error(err, tracking) -// } -// logrus.Info("save tracking:", ts) -// meta, err := json.Marshal(tracking.TrackingMetadata) -// if err != nil { -// logrus.Error(err, tracking) -// return err -// } -// wg := sync.WaitGroup{} -// wg.Add(3) -// ch := make(chan error, 3) -// go func() { -// defer wg.Done() -// err = r.recordsDb.Update(func(txn *badger.Txn) error { -// for _, v := range tracking.Records { -// k := createRecordKey(tracking.UUID, v.RecordTime.UnixNano()) -// j, err := json.Marshal(v) -// if err != nil { -// return err -// } -// txn.Set(k, j) -// } -// return nil -// }) -// ch <- err -// }() -// go func() { -// defer wg.Done() -// err = r.recordsDb.Update(func(txn *badger.Txn) error { -// for _, v := range tracking.Rawdata { -// k := createRecordKey(tracking.UUID, v.Timestamp) -// j, err := json.Marshal(v) -// if err != nil { -// return err -// } -// txn.Set(k, j) -// } -// return nil -// }) -// ch <- err -// }() -// go func() { -// defer wg.Done() -// err = r.trackingsDb.Update(func(txn *badger.Txn) error { -// err := txn.Set(ts, meta) -// return err -// }) -// ch <- err -// }() -// wg.Wait() -// for { -// select { -// case err := <-ch: -// if err != nil { -// logrus.Error(err, tracking) -// return err -// } -// default: -// close(ch) -// break -// } -// } -// return nil -//} - func (r *badgerStore) LoadAll() ([]core.TrackingMetadata, error) { - panic("implement me") + var result []core.TrackingMetadata + err := r.trackingsDb.View(func(txn *badger.Txn) error { + opts := badger.DefaultIteratorOptions + it := txn.NewIterator(opts) + defer it.Close() + for it.Rewind(); it.Valid(); it.Next() { + item := it.Item() + el := core.TrackingMetadata{} + item.Value(func(val []byte) error { + logrus.Debugln(string(val)) + err := json.Unmarshal(val, &el) + return err + }) + result = append(result, el) + } + return nil + }) + if err != nil { + return nil, err + } + return result, nil } func (r *badgerStore) Load(id uuid.UUID) (core.Tracking, error) { diff --git a/web/http.go b/web/http.go index dbc7fd5..a371652 100644 --- a/web/http.go +++ b/web/http.go @@ -59,7 +59,6 @@ func allTrackingsHandler(s core.Service, c *core.Configuration) fiber.Handler { prepres["error"] = err.Error() } - err2 := ctx.JSON(prepres) if err2 != nil { ctx.Status(500).JSON(err2)