in server/datasource/etcd/history/history_dao.go [38:75]
func (s *Dao) GetHistory(ctx context.Context, kvID, project, domain string, options ...datasource.FindOption) (*model.KVResponse, error) {
kvreq := &model.GetKVRequest{
Domain: domain,
Project: project,
ID: kvID,
}
kvdoc, err := datasource.GetBroker().GetKVDao().Get(ctx, kvreq)
if err != nil {
return nil, err
}
if err := auth.CheckGetKV(ctx, kvdoc); err != nil {
return nil, err
}
opts := datasource.FindOptions{}
for _, o := range options {
o(&opts)
}
kvs, total, err := etcdadpt.List(ctx, key.HisList(domain, project, kvID))
if err != nil {
openlog.Error(err.Error())
return nil, err
}
histories := make([]*model.KVDoc, 0, len(kvs))
for _, kv := range kvs {
var doc model.KVDoc
err := json.Unmarshal(kv.Value, &doc)
if err != nil {
openlog.Error("decode error: " + err.Error())
continue
}
histories = append(histories, &doc)
}
return &model.KVResponse{
Data: pagingResult(histories, opts.Offset, opts.Limit),
Total: int(total),
}, nil
}