mirror of
https://gitee.com/milvus-io/milvus.git
synced 2024-11-30 10:59:32 +08:00
9c46788d87
issue: #28348 Signed-off-by: SimFG <bang.fu@zilliz.com>
171 lines
4.0 KiB
Go
171 lines
4.0 KiB
Go
/*
|
|
* Licensed to the LF AI & Data foundation under one
|
|
* or more contributor license agreements. See the NOTICE file
|
|
* distributed with this work for additional information
|
|
* regarding copyright ownership. The ASF licenses this file
|
|
* to you under the Apache License, Version 2.0 (the
|
|
* "License"); you may not use this file except in compliance
|
|
* with the License. You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package requestutil
|
|
|
|
import "github.com/milvus-io/milvus-proto/go-api/v2/commonpb"
|
|
|
|
type CollectionNameGetter interface {
|
|
GetCollectionName() string
|
|
}
|
|
|
|
func GetCollectionNameFromRequest(req any) (any, bool) {
|
|
getter, ok := req.(CollectionNameGetter)
|
|
if !ok {
|
|
return "", false
|
|
}
|
|
return getter.GetCollectionName(), true
|
|
}
|
|
|
|
type DBNameGetter interface {
|
|
GetDbName() string
|
|
}
|
|
|
|
func GetDbNameFromRequest(req interface{}) (any, bool) {
|
|
getter, ok := req.(DBNameGetter)
|
|
if !ok {
|
|
return "", false
|
|
}
|
|
return getter.GetDbName(), true
|
|
}
|
|
|
|
type PartitionNameGetter interface {
|
|
GetPartitionName() string
|
|
}
|
|
|
|
func GetPartitionNameFromRequest(req interface{}) (any, bool) {
|
|
getter, ok := req.(PartitionNameGetter)
|
|
if !ok {
|
|
return "", false
|
|
}
|
|
return getter.GetPartitionName(), true
|
|
}
|
|
|
|
type PartitionNamesGetter interface {
|
|
GetPartitionNames() []string
|
|
}
|
|
|
|
func GetPartitionNamesFromRequest(req interface{}) (any, bool) {
|
|
getter, ok := req.(PartitionNamesGetter)
|
|
if !ok {
|
|
return nil, false
|
|
}
|
|
return getter.GetPartitionNames(), true
|
|
}
|
|
|
|
type FieldNameGetter interface {
|
|
GetFieldName() string
|
|
}
|
|
|
|
func GetFieldNameFromRequest(req interface{}) (any, bool) {
|
|
getter, ok := req.(FieldNameGetter)
|
|
if !ok {
|
|
return "", false
|
|
}
|
|
return getter.GetFieldName(), true
|
|
}
|
|
|
|
type OutputFieldsGetter interface {
|
|
GetOutputFields() []string
|
|
}
|
|
|
|
func GetOutputFieldsFromRequest(req interface{}) (any, bool) {
|
|
getter, ok := req.(OutputFieldsGetter)
|
|
if !ok {
|
|
return nil, false
|
|
}
|
|
return getter.GetOutputFields(), true
|
|
}
|
|
|
|
type QueryParamsGetter interface {
|
|
GetQueryParams() []*commonpb.KeyValuePair
|
|
}
|
|
|
|
func GetQueryParamsFromRequest(req interface{}) (any, bool) {
|
|
getter, ok := req.(QueryParamsGetter)
|
|
if !ok {
|
|
return nil, false
|
|
}
|
|
return getter.GetQueryParams(), true
|
|
}
|
|
|
|
type ExprGetter interface {
|
|
GetExpr() string
|
|
}
|
|
|
|
func GetExprFromRequest(req interface{}) (any, bool) {
|
|
getter, ok := req.(ExprGetter)
|
|
if !ok {
|
|
return "", false
|
|
}
|
|
return getter.GetExpr(), true
|
|
}
|
|
|
|
type SearchParamsGetter interface {
|
|
GetSearchParams() []*commonpb.KeyValuePair
|
|
}
|
|
|
|
func GetSearchParamsFromRequest(req interface{}) (any, bool) {
|
|
getter, ok := req.(SearchParamsGetter)
|
|
if !ok {
|
|
return nil, false
|
|
}
|
|
return getter.GetSearchParams(), true
|
|
}
|
|
|
|
type DSLGetter interface {
|
|
GetDsl() string
|
|
}
|
|
|
|
func GetDSLFromRequest(req interface{}) (any, bool) {
|
|
getter, ok := req.(DSLGetter)
|
|
if !ok {
|
|
return "", false
|
|
}
|
|
return getter.GetDsl(), true
|
|
}
|
|
|
|
type StatusGetter interface {
|
|
GetStatus() *commonpb.Status
|
|
}
|
|
|
|
func GetStatusFromResponse(resp interface{}) (*commonpb.Status, bool) {
|
|
status, ok := resp.(*commonpb.Status)
|
|
if ok {
|
|
return status, true
|
|
}
|
|
getter, ok := resp.(StatusGetter)
|
|
if !ok {
|
|
return nil, false
|
|
}
|
|
return getter.GetStatus(), true
|
|
}
|
|
|
|
var TraceLogBaseInfoFuncMap = map[string]func(interface{}) (any, bool){
|
|
"collection_name": GetCollectionNameFromRequest,
|
|
"db_name": GetDbNameFromRequest,
|
|
"partition_name": GetPartitionNameFromRequest,
|
|
"partition_names": GetPartitionNamesFromRequest,
|
|
"field_name": GetFieldNameFromRequest,
|
|
"output_fields": GetOutputFieldsFromRequest,
|
|
"query_params": GetQueryParamsFromRequest,
|
|
"expr": GetExprFromRequest,
|
|
"search_params": GetSearchParamsFromRequest,
|
|
"dsl": GetDSLFromRequest,
|
|
}
|