refactor: openpitrix module
Signed-off-by: hongming <talonwan@yunify.com>
This commit is contained in:
139
vendor/openpitrix.io/openpitrix/pkg/util/pbutil/pb.go
generated
vendored
Normal file
139
vendor/openpitrix.io/openpitrix/pkg/util/pbutil/pb.go
generated
vendored
Normal file
@@ -0,0 +1,139 @@
|
||||
// Copyright 2017 The OpenPitrix Authors. All rights reserved.
|
||||
// Use of this source code is governed by a Apache license
|
||||
// that can be found in the LICENSE file.
|
||||
|
||||
package pbutil
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/golang/protobuf/ptypes"
|
||||
"github.com/golang/protobuf/ptypes/timestamp"
|
||||
"github.com/golang/protobuf/ptypes/wrappers"
|
||||
|
||||
"openpitrix.io/openpitrix/pkg/db"
|
||||
"openpitrix.io/openpitrix/pkg/logger"
|
||||
)
|
||||
|
||||
type RequestHadOffset interface {
|
||||
GetOffset() uint32
|
||||
}
|
||||
|
||||
type RequestHadLimit interface {
|
||||
GetLimit() uint32
|
||||
}
|
||||
|
||||
const (
|
||||
DefaultOffset = uint64(0)
|
||||
DefaultLimit = uint64(20)
|
||||
)
|
||||
|
||||
func GetOffsetFromRequest(req RequestHadOffset) uint64 {
|
||||
n := req.GetOffset()
|
||||
if n == 0 {
|
||||
return DefaultOffset
|
||||
}
|
||||
return db.GetOffset(uint64(n))
|
||||
}
|
||||
|
||||
func GetLimitFromRequest(req RequestHadLimit) uint64 {
|
||||
n := req.GetLimit()
|
||||
if n == 0 {
|
||||
return DefaultLimit
|
||||
}
|
||||
return db.GetLimit(uint64(n))
|
||||
}
|
||||
|
||||
func GetTime(t *timestamp.Timestamp) (tt time.Time) {
|
||||
if t == nil {
|
||||
return time.Now()
|
||||
} else {
|
||||
return FromProtoTimestamp(t)
|
||||
}
|
||||
}
|
||||
|
||||
func FromProtoTimestamp(t *timestamp.Timestamp) (tt time.Time) {
|
||||
tt, err := ptypes.Timestamp(t)
|
||||
if err != nil {
|
||||
logger.Critical(nil, "Cannot convert timestamp [T] to time.Time [%+v]: %+v", t, err)
|
||||
panic(err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func ToProtoTimestamp(t time.Time) (tt *timestamp.Timestamp) {
|
||||
if t.IsZero() {
|
||||
return nil
|
||||
}
|
||||
tt, err := ptypes.TimestampProto(t)
|
||||
if err != nil {
|
||||
logger.Critical(nil, "Cannot convert time.Time [%+v] to ToProtoTimestamp[T]: %+v", t, err)
|
||||
panic(err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func ToProtoString(str string) *wrappers.StringValue {
|
||||
return &wrappers.StringValue{Value: str}
|
||||
}
|
||||
|
||||
func ToProtoUInt32(uint32 uint32) *wrappers.UInt32Value {
|
||||
return &wrappers.UInt32Value{Value: uint32}
|
||||
}
|
||||
|
||||
func ToProtoInt32(i int32) *wrappers.Int32Value {
|
||||
return &wrappers.Int32Value{Value: i}
|
||||
}
|
||||
|
||||
func ToProtoBool(bool bool) *wrappers.BoolValue {
|
||||
return &wrappers.BoolValue{Value: bool}
|
||||
}
|
||||
|
||||
func ToProtoBytes(bytes []byte) *wrappers.BytesValue {
|
||||
return &wrappers.BytesValue{Value: bytes}
|
||||
}
|
||||
|
||||
type DescribeResponse interface {
|
||||
GetTotalCount() uint32
|
||||
}
|
||||
|
||||
type DescribeApi interface {
|
||||
SetRequest(ctx context.Context, req interface{}, limit, offset uint32) error
|
||||
Describe(ctx context.Context, req interface{}, advancedParams ...string) (DescribeResponse, error)
|
||||
}
|
||||
|
||||
func DescribeAllResponses(ctx context.Context, describeApi DescribeApi, req interface{}, advancedParams ...string) ([]DescribeResponse, error) {
|
||||
limit := uint32(db.DefaultSelectLimit)
|
||||
offset := uint32(0)
|
||||
var responses []DescribeResponse
|
||||
|
||||
if err := describeApi.SetRequest(ctx, req, limit, offset); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
response, err := describeApi.Describe(ctx, req, advancedParams...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
totalCount := response.GetTotalCount()
|
||||
|
||||
responses = append(responses, response)
|
||||
offset = offset + db.DefaultSelectLimit
|
||||
for {
|
||||
if totalCount > uint32(offset) {
|
||||
if err := describeApi.SetRequest(ctx, req, limit, offset); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
response, err = describeApi.Describe(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
responses = append(responses, response)
|
||||
offset = offset + db.DefaultSelectLimit
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
return responses, nil
|
||||
}
|
||||
Reference in New Issue
Block a user