table_search.go 2.6 KB
package bytelib

import (
	"context"
	"net/http"
)

func (gateway *ByteMetadataService) ObjectTableSearch(ctx context.Context, request ObjectTableSearchRequest) (ObjectTableSearchResponse, error) {
	result := ObjectTableSearchResponse{}
	if err := gateway.Do(ctx, "/data/table-object-search", http.MethodPost, request, &result); err != nil {
		return result, err
	}
	return result, nil
}

type ObjectTableSearchRequest struct {
	Token string `header:"x-mmm-accesstoken"`
	// 表名称
	Name string `cname:"表名称" json:"name,optional"`
	//ViewType string `cname:"视图类型 full:完整 main:主表关系" json:"viewType"`
	// 表类型 MainTable:主表 SideTable:副表 SubTable:分表  ExcelTable:Excel表 SubProcess:子过程 Schema:方案
	TableTypes []string `json:"tableTypes"`
	// 父级ID
	ParentId int `json:"parentId,optional"`
	// 模块 应用于模块 1:数控中心 2:拆解模块 4:计算模块
	Module int `json:"module"`
	// 父级ID
	ParentTableId int `json:"parentTableId,optional"`
	// 返回具体的结构信息 默认不返回
	ReturnDetailStructInfo bool `json:"returnDetailStructInfo,optional"`
	// 排除分组项,只返回一级列表;默认 false 不排除,连分组也返回
	ReturnGroupItem bool `json:"returnGroupItem,optional"`
	// 排除指定表
	ExcludeTables []int         `json:"excludeTables,optional"`
	FilterRules   []*FilterRule `json:"filterRules,optional"`
	TableId       int           `json:"tableId,optional"`
	QuerySetId    int64         `json:"QuerySetId,optional"`
}

type ObjectTableSearchResponse struct {
	Count int      `json:"count"`
	List  []*Table `json:"tableObjects"`
}

type FilterRule struct {
	// *:匹配所有
	TableType string `json:"tableType"`
	Status    int    `json:"status"`
}

type Table struct {
	// 序号
	Id int `json:"id"`
	// 表Id
	TableId int `json:"tableId"`
	// 表类型 MainTable:主表 SideTable:副表 SubTable:分表  ExcelTable:Excel表
	TableType string `json:"tableType"`
	// 名称
	Name string `json:"name"`
	// 对应数据库名称
	// SQLName string `json:"sqlName,omitempty"`
	// 父级ID
	ParentId int `json:"parentId"`
	// 模块 应用于模块 1:数控中心 2:拆解模块 4:计算模块
	// Module int `json:"module"`
	// 标识
	Flag string `json:"flag,omitempty"`
	// 启用状态
	// Status int `json:"status"`
	// 冲突状态
	// InConflict bool `json:"inConflict"`
	// 表字段
	Fields []*Field `json:"fields"`
}

// Field 字段
type Field struct {
	// 名称
	Name string `json:"name"`
	// 对应数据库名称
	SQLName string `json:"sqlName"`
	// 对应数据库类型
	SQLType string `json:"sqlType"`
	// 标识 1.主键 2:主表字段 3:手动添加
	//Flag int `json:"flag"`
}