mirror of
https://github.com/wavetermdev/backup.git
synced 2026-08-05 13:57:07 -07:00
checkpoint on new objectservice
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
// Copyright 2024, Command Line Inc.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package objectservice
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/wavetermdev/thenextwave/pkg/waveobj"
|
||||
"github.com/wavetermdev/thenextwave/pkg/wstore"
|
||||
)
|
||||
|
||||
type ObjectService struct{}
|
||||
|
||||
const DefaultTimeout = 2 * time.Second
|
||||
|
||||
func parseORef(oref string) (*waveobj.ORef, error) {
|
||||
fields := strings.Split(oref, ":")
|
||||
if len(fields) != 2 {
|
||||
return nil, fmt.Errorf("invalid object reference: %q", oref)
|
||||
}
|
||||
return &waveobj.ORef{OType: fields[0], OID: fields[1]}, nil
|
||||
}
|
||||
|
||||
func (svc *ObjectService) GetObject(orefStr string) (any, error) {
|
||||
oref, err := parseORef(orefStr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ctx, cancelFn := context.WithTimeout(context.Background(), DefaultTimeout)
|
||||
defer cancelFn()
|
||||
obj, err := wstore.DBGetORef(ctx, *oref)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error getting object: %w", err)
|
||||
}
|
||||
return obj, nil
|
||||
}
|
||||
|
||||
func (svc *ObjectService) GetObjects(orefStrArr []string) (any, error) {
|
||||
ctx, cancelFn := context.WithTimeout(context.Background(), DefaultTimeout)
|
||||
defer cancelFn()
|
||||
|
||||
var orefArr []waveobj.ORef
|
||||
for _, orefStr := range orefStrArr {
|
||||
orefObj, err := parseORef(orefStr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
orefArr = append(orefArr, *orefObj)
|
||||
}
|
||||
return wstore.DBSelectORefs(ctx, orefArr)
|
||||
}
|
||||
Reference in New Issue
Block a user