relationDB

package
v0.6.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 24, 2023 License: AGPL-3.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Migrate

func Migrate() error

func ToActionDo

func ToActionDo(in *DmProductSchema) *schema.Action

func ToAffordancePo

func ToAffordancePo(in any) string

func ToCommonParam

func ToCommonParam(in *DmProductSchema) schema.CommonParam

func ToEventDo

func ToEventDo(in *DmProductSchema) *schema.Event

func ToPropertyDo

func ToPropertyDo(in *DmProductSchema) *schema.Property

func ToSchemaDo

func ToSchemaDo(productID string, in []*DmProductSchema) *schema.Model

Types

type ActionDef

type ActionDef struct {
	Dir    schema.ActionDir `json:"dir"`    //调用方向
	Input  schema.Params    `json:"input"`  //调用参数
	Output schema.Params    `json:"output"` //返回参数
}

type DeviceFilter

type DeviceFilter struct {
	ProductID     string
	AreaIDs       []int64
	DeviceName    string
	DeviceNames   []string
	Tags          map[string]string
	LastLoginTime struct {
		Start int64
		End   int64
	}
	IsOnline    int64
	Range       int64
	Position    stores.Point
	DeviceAlias string
	Versions    []string
	WithProduct bool
}

type DeviceInfoRepo

type DeviceInfoRepo struct {
	// contains filtered or unexported fields
}

func NewDeviceInfoRepo

func NewDeviceInfoRepo(in any) *DeviceInfoRepo

func (DeviceInfoRepo) CountByFilter

func (d DeviceInfoRepo) CountByFilter(ctx context.Context, f DeviceFilter) (size int64, err error)

func (DeviceInfoRepo) CountGroupByField

func (d DeviceInfoRepo) CountGroupByField(ctx context.Context, f DeviceFilter, columnName string) (map[string]int64, error)

func (DeviceInfoRepo) Delete

func (d DeviceInfoRepo) Delete(ctx context.Context, id int64) error

func (DeviceInfoRepo) FindByFilter

func (d DeviceInfoRepo) FindByFilter(ctx context.Context, f DeviceFilter, page *def.PageInfo) ([]*DmDeviceInfo, error)

func (DeviceInfoRepo) FindOneByFilter

func (d DeviceInfoRepo) FindOneByFilter(ctx context.Context, f DeviceFilter) (*DmDeviceInfo, error)

func (DeviceInfoRepo) Insert

func (d DeviceInfoRepo) Insert(ctx context.Context, data *DmDeviceInfo) error

func (DeviceInfoRepo) Update

func (d DeviceInfoRepo) Update(ctx context.Context, data *DmDeviceInfo) error

type DmDeviceInfo

type DmDeviceInfo struct {
	ID             int64             `gorm:"column:id;type:bigint;primary_key;AUTO_INCREMENT"`
	ProjectID      int64             `gorm:"column:project_id;index:project_id_area_id;uniqueIndex:product_id_deviceName;type:bigint;default:0;NOT NULL"` // 项目ID(雪花ID)
	AreaID         int64             `gorm:"column:area_id;index:project_id_area_id;type:bigint;default:0;NOT NULL"`                                      // 项目区域ID(雪花ID)
	ProductID      string            `gorm:"column:product_id;type:char(11);NOT NULL"`                                                                    // 产品id
	DeviceName     string            `gorm:"column:device_name;uniqueIndex:product_id_deviceName;type:varchar(100);NOT NULL"`                             // 设备名称
	DeviceAlias    string            `gorm:"column:device_alias;type:varchar(100);NOT NULL"`                                                              // 设备别名
	Position       stores.Point      `gorm:"column:position;type:point;NOT NULL"`                                                                         // 设备的位置(默认百度坐标系BD09)
	Secret         string            `gorm:"column:secret;type:varchar(50);NOT NULL"`                                                                     // 设备秘钥
	Cert           string            `gorm:"column:cert;type:varchar(512);NOT NULL"`                                                                      // 设备证书
	Imei           string            `gorm:"column:imei;type:varchar(15);NOT NULL"`                                                                       // IMEI号信息
	Mac            string            `gorm:"column:mac;type:varchar(17);NOT NULL"`                                                                        // MAC号信息
	Version        string            `gorm:"column:version;type:varchar(64);NOT NULL"`                                                                    // 固件版本
	HardInfo       string            `gorm:"column:hard_info;type:varchar(64);NOT NULL"`                                                                  // 模组硬件型号
	SoftInfo       string            `gorm:"column:soft_info;type:varchar(64);NOT NULL"`                                                                  // 模组软件版本
	MobileOperator int64             `gorm:"column:mobile_operator;type:smallint;default:1;NOT NULL"`                                                     // 移动运营商:1)移动 2)联通 3)电信 4)广电
	Phone          sql.NullString    `gorm:"column:phone;uniqueIndex;type:varchar(20)"`                                                                   // 手机号
	Iccid          sql.NullString    `gorm:"column:iccid;uniqueIndex;type:varchar(20)"`                                                                   // SIM卡卡号
	Address        string            `gorm:"column:address;type:varchar(512);NOT NULL"`                                                                   // 所在地址
	Tags           map[string]string `gorm:"column:tags;type:json;serializer:json;NOT NULL;default:'{}'"`                                                 // 设备标签
	IsOnline       int64             `gorm:"column:is_online;type:smallint;default:2;NOT NULL"`                                                           // 是否在线,1是2否
	FirstLogin     sql.NullTime      `gorm:"column:first_login"`                                                                                          // 激活时间
	LastLogin      sql.NullTime      `gorm:"column:last_login"`                                                                                           // 最后上线时间
	LogLevel       int64             `gorm:"column:log_level;type:smallint;default:1;NOT NULL"`                                                           // 日志级别:1)关闭 2)错误 3)告警 4)信息 5)调试
	stores.Time
	ProductInfo *DmProductInfo `gorm:"foreignKey:ProductID;references:ProductID"` // 添加外键

}

设备信息表

func (*DmDeviceInfo) TableName

func (m *DmDeviceInfo) TableName() string

type DmExample

type DmExample struct {
	ID int64 `gorm:"column:id;type:bigint;primary_key;AUTO_INCREMENT"` // id编号
}

type DmGatewayDevice

type DmGatewayDevice struct {
	ID                int64  `gorm:"column:id;type:bigint;primary_key;AUTO_INCREMENT"`
	GatewayProductID  string `gorm:"column:gateway_product_id;uniqueIndex:gpi_pdn_pi_dn;type:char(11);NOT NULL"`      // 网关产品id
	GatewayDeviceName string `gorm:"column:gateway_device_name;uniqueIndex:gpi_pdn_pi_dn;type:varchar(100);NOT NULL"` // 网关设备名称
	ProductID         string `gorm:"column:product_id;uniqueIndex:gpi_pdn_pi_dn;type:char(11);NOT NULL"`              // 子设备产品id
	DeviceName        string `gorm:"column:device_name;uniqueIndex:gpi_pdn_pi_dn;type:varchar(100);NOT NULL"`         // 子设备名称
	stores.Time
	Device  *DmDeviceInfo `gorm:"foreignKey:ProductID,device_name;references:ProductID,DeviceName"`
	Gateway *DmDeviceInfo `gorm:"foreignKey:ProductID,device_name;references:GatewayProductID,GatewayDeviceName"`
}

网关与子设备关系表

func (*DmGatewayDevice) TableName

func (m *DmGatewayDevice) TableName() string

type DmGroupDevice

type DmGroupDevice struct {
	ID         int64  `gorm:"column:id;type:bigint;primary_key;AUTO_INCREMENT"`
	GroupID    int64  `gorm:"column:group_id;uniqueIndex:group_id_product_id_device_name;type:bigint;NOT NULL"`          // 分组ID
	ProjectID  int64  `gorm:"column:project_id;index;type:bigint;default:0;NOT NULL"`                                    // 项目ID(雪花ID)
	ProductID  string `gorm:"column:product_id;uniqueIndex:group_id_product_id_device_name;type:char(11);NOT NULL"`      // 产品id
	DeviceName string `gorm:"column:device_name;uniqueIndex:group_id_product_id_device_name;type:varchar(100);NOT NULL"` // 设备名称
	stores.Time
	ProductInfo *DmProductInfo `gorm:"foreignKey:ProductID;references:ProductID"`
}

分组与设备关系表

func (*DmGroupDevice) TableName

func (m *DmGroupDevice) TableName() string

type DmGroupInfo

type DmGroupInfo struct {
	GroupID   int64             `gorm:"column:group_id;primary_key;AUTO_INCREMENT;type:bigint"`      // 分组ID
	ParentID  int64             `gorm:"column:parent_id;type:bigint;default:0;NOT NULL"`             // 父组ID 0-根组
	ProjectID int64             `gorm:"column:project_id;index;type:bigint;default:0;NOT NULL"`      // 项目ID(雪花ID)
	ProductID string            `gorm:"column:product_id;type:char(11);NOT NULL"`                    // 产品id,为空则不限定分组内的产品类型
	GroupName string            `gorm:"column:group_name;uniqueIndex;type:varchar(100);NOT NULL"`    // 分组名称
	Desc      string            `gorm:"column:desc;type:varchar(200)"`                               // 描述
	Tags      map[string]string `gorm:"column:tags;type:json;serializer:json;NOT NULL;default:'{}'"` // 分组标签
	stores.Time
	ProductInfo *DmProductInfo `gorm:"foreignKey:ProductID;references:ProductID"`
}

设备分组信息表

func (*DmGroupInfo) TableName

func (m *DmGroupInfo) TableName() string

type DmProductCustom

type DmProductCustom struct {
	ID              int64          `gorm:"column:id;type:bigint;primary_key;AUTO_INCREMENT"`
	ProductID       string         `gorm:"column:product_id;uniqueIndex;type:char(11);NOT NULL"` // 产品id
	ScriptLang      int64          `gorm:"column:script_lang;type:smallint;default:1"`           // 脚本语言类型 1:JavaScript 2:lua 3:python
	CustomTopic     sql.NullString `gorm:"column:custom_topic;type:json"`                        // 自定义topic数组
	TransformScript sql.NullString `gorm:"column:transform_script;type:text"`                    // 协议转换脚本
	LoginAuthScript sql.NullString `gorm:"column:login_auth_script;type:text"`                   // 登录认证脚本
	stores.Time
	ProductInfo *DmProductInfo `gorm:"foreignKey:ProductID;references:ProductID"`
}

产品自定义协议表

func (*DmProductCustom) TableName

func (m *DmProductCustom) TableName() string

type DmProductInfo

type DmProductInfo struct {
	ProductID    string            `gorm:"column:product_id;type:char(11);primary_key;NOT NULL"`        // 产品id
	ProductName  string            `gorm:"column:product_name;uniqueIndex;type:varchar(100);NOT NULL"`  // 产品名称
	ProductImg   string            `gorm:"column:product_img;type:varchar(200)"`                        // 产品图片
	ProductType  int64             `gorm:"column:product_type;type:smallint;default:1"`                 // 产品状态:1:开发中,2:审核中,3:已发布
	AuthMode     int64             `gorm:"column:auth_mode;type:smallint;default:1"`                    // 认证方式:1:账密认证,2:秘钥认证
	DeviceType   int64             `gorm:"column:device_type;index;type:smallint;default:1"`            // 设备类型:1:设备,2:网关,3:子设备
	CategoryID   int64             `gorm:"column:category_id;type:integer;default:1"`                   // 产品品类
	NetType      int64             `gorm:"column:net_type;type:smallint;default:1"`                     // 通讯方式:1:其他,2:wi-fi,3:2G/3G/4G,4:5G,5:BLE,6:LoRaWAN
	DataProto    int64             `gorm:"column:data_proto;type:smallint;default:1"`                   // 数据协议:1:自定义,2:数据模板
	AutoRegister int64             `gorm:"column:auto_register;type:smallint;default:1"`                // 动态注册:1:关闭,2:打开,3:打开并自动创建设备
	Secret       string            `gorm:"column:secret;type:varchar(50)"`                              // 动态注册产品秘钥
	Desc         string            `gorm:"column:description;type:varchar(200)"`                        // 描述
	DevStatus    string            `gorm:"column:dev_status;type:varchar(20);NOT NULL"`                 // 产品状态
	Tags         map[string]string `gorm:"column:tags;type:json;serializer:json;NOT NULL;default:'{}'"` // 产品标签

	stores.Time
}

产品信息表

func (*DmProductInfo) TableName

func (m *DmProductInfo) TableName() string

type DmProductRemoteConfig

type DmProductRemoteConfig struct {
	ID        int64  `gorm:"column:id;type:bigint;primary_key;AUTO_INCREMENT"`
	ProductID string `gorm:"column:product_id;index;type:char(11);NOT NULL"` // 产品id
	Content   string `gorm:"column:content;type:json;NOT NULL"`              // 配置内容
	stores.Time
	ProductInfo *DmProductInfo `gorm:"foreignKey:ProductID;references:ProductID"`
}

产品远程配置表

func (*DmProductRemoteConfig) TableName

func (m *DmProductRemoteConfig) TableName() string

type DmProductSchema

type DmProductSchema struct {
	ID         int64  `gorm:"column:id;type:bigint;primary_key;AUTO_INCREMENT"`
	ProductID  string `gorm:"column:product_id;uniqueIndex:product_id_identifier;index:product_id_type;type:char(11);NOT NULL"` // 产品id
	Tag        int64  `gorm:"column:tag;type:smallint;default:1"`                                                               // 物模型标签 1:自定义 2:可选 3:必选  必选不可删除
	Type       int64  `gorm:"column:type;index:product_id_type;type:smallint;default:1"`                                        // 物模型类型 1:property属性 2:event事件 3:action行为
	Identifier string `gorm:"column:identifier;uniqueIndex:product_id_identifier;type:varchar(100);NOT NULL"`                   // 标识符
	Name       string `gorm:"column:name;type:varchar(100);NOT NULL"`                                                           // 功能名称
	Desc       string `gorm:"column:desc;type:varchar(200)"`                                                                    // 描述
	Required   int64  `gorm:"column:required;type:smallint;default:2"`                                                          // 是否必须,1是 2否
	Affordance string `gorm:"column:affordance;type:json;NOT NULL"`                                                             // 各类型的自定义功能定义
	stores.Time
	ProductInfo *DmProductInfo `gorm:"foreignKey:ProductID;references:ProductID"`
}

产品物模型表

func ToActionPo

func ToActionPo(productID string, in *schema.Action) *DmProductSchema

func ToEventPo

func ToEventPo(productID string, in *schema.Event) *DmProductSchema

func ToPropertyPo

func ToPropertyPo(productID string, in *schema.Property) *DmProductSchema

func (*DmProductSchema) TableName

func (m *DmProductSchema) TableName() string

type EventDef

type EventDef struct {
	Type   schema.EventType `json:"type"`   //事件类型: 1:信息:info  2:告警alert  3:故障:fault
	Params schema.Params    `json:"params"` //事件参数
}

type ExampleFilter

type ExampleFilter struct {
}

type ExampleRepo

type ExampleRepo struct {
	// contains filtered or unexported fields
}

func NewExampleRepo

func NewExampleRepo(in any) *ExampleRepo

func (ExampleRepo) CountByFilter

func (p ExampleRepo) CountByFilter(ctx context.Context, f ExampleFilter) (size int64, err error)

func (ExampleRepo) Delete

func (p ExampleRepo) Delete(ctx context.Context, id int64) error

func (ExampleRepo) DeleteByFilter

func (p ExampleRepo) DeleteByFilter(ctx context.Context, f ExampleFilter) error

func (ExampleRepo) FindByFilter

func (p ExampleRepo) FindByFilter(ctx context.Context, f ExampleFilter, page *def.PageInfo) ([]*DmExample, error)

func (ExampleRepo) FindOne

func (p ExampleRepo) FindOne(ctx context.Context, id int64) (*DmExample, error)

func (ExampleRepo) FindOneByFilter

func (p ExampleRepo) FindOneByFilter(ctx context.Context, f ExampleFilter) (*DmExample, error)

func (ExampleRepo) Insert

func (p ExampleRepo) Insert(ctx context.Context, data *DmExample) error

func (ExampleRepo) MultiInsert

func (p ExampleRepo) MultiInsert(ctx context.Context, data []*DmExample) error

批量插入 LightStrategyDevice 记录

func (ExampleRepo) Update

func (p ExampleRepo) Update(ctx context.Context, data *DmExample) error

type GatewayDeviceFilter

type GatewayDeviceFilter struct {
	//网关和子设备 至少要有一个填写
	Gateway *devices.Core
	//网关和子设备 至少要有一个填写
	SubDevice *devices.Core
}

type GatewayDeviceRepo

type GatewayDeviceRepo struct {
	// contains filtered or unexported fields
}

func NewGatewayDeviceRepo

func NewGatewayDeviceRepo(in any) *GatewayDeviceRepo

func (GatewayDeviceRepo) CountByFilter

func (g GatewayDeviceRepo) CountByFilter(ctx context.Context, f GatewayDeviceFilter) (size int64, err error)

func (GatewayDeviceRepo) FindByFilter

func (g GatewayDeviceRepo) FindByFilter(ctx context.Context, f GatewayDeviceFilter, page *def.PageInfo) ([]*DmDeviceInfo, error)

func (GatewayDeviceRepo) FindOneByFilter

func (GatewayDeviceRepo) MultiDelete

func (m GatewayDeviceRepo) MultiDelete(ctx context.Context, gateway *devices.Core, subDevice []*devices.Core) error

批量插入 LightStrategyDevice 记录

func (GatewayDeviceRepo) MultiInsert

func (m GatewayDeviceRepo) MultiInsert(ctx context.Context, gateway *devices.Core, subDevice []*devices.Core) error

type GroupDeviceFilter

type GroupDeviceFilter struct {
	GroupID     int64
	ProductID   string
	DeviceName  string
	WithProduct bool
}

type GroupDeviceRepo

type GroupDeviceRepo struct {
	// contains filtered or unexported fields
}

func NewGroupDeviceRepo

func NewGroupDeviceRepo(in any) *GroupDeviceRepo

func (GroupDeviceRepo) CountByFilter

func (p GroupDeviceRepo) CountByFilter(ctx context.Context, f GroupDeviceFilter) (size int64, err error)

func (GroupDeviceRepo) DeleteByFilter

func (p GroupDeviceRepo) DeleteByFilter(ctx context.Context, f GroupDeviceFilter) error

func (GroupDeviceRepo) FindByFilter

func (p GroupDeviceRepo) FindByFilter(ctx context.Context, f GroupDeviceFilter, page *def.PageInfo) ([]*DmGroupDevice, error)

func (GroupDeviceRepo) FindOneByFilter

func (p GroupDeviceRepo) FindOneByFilter(ctx context.Context, f GroupDeviceFilter) (*DmGroupDevice, error)

func (GroupDeviceRepo) MultiDelete

func (m GroupDeviceRepo) MultiDelete(ctx context.Context, groupID int64, data []*DmGroupDevice) error

批量插入 LightStrategyDevice 记录

func (GroupDeviceRepo) MultiInsert

func (m GroupDeviceRepo) MultiInsert(ctx context.Context, data []*DmGroupDevice) error

批量插入 LightStrategyDevice 记录

type GroupInfoFilter

type GroupInfoFilter struct {
	GroupID     int64
	GroupNames  []string
	ParentID    int64
	GroupName   string
	Tags        map[string]string
	WithProduct bool
}

type GroupInfoRepo

type GroupInfoRepo struct {
	// contains filtered or unexported fields
}

func NewGroupInfoRepo

func NewGroupInfoRepo(in any) *GroupInfoRepo

func (GroupInfoRepo) CountByFilter

func (p GroupInfoRepo) CountByFilter(ctx context.Context, f GroupInfoFilter) (size int64, err error)

func (GroupInfoRepo) DeleteByFilter

func (g GroupInfoRepo) DeleteByFilter(ctx context.Context, f GroupInfoFilter) error

func (GroupInfoRepo) FindByFilter

func (p GroupInfoRepo) FindByFilter(ctx context.Context, f GroupInfoFilter, page *def.PageInfo) ([]*DmGroupInfo, error)

func (GroupInfoRepo) FindOneByFilter

func (g GroupInfoRepo) FindOneByFilter(ctx context.Context, f GroupInfoFilter) (*DmGroupInfo, error)

func (GroupInfoRepo) Insert

func (g GroupInfoRepo) Insert(ctx context.Context, data *DmGroupInfo) error

func (GroupInfoRepo) Update

func (g GroupInfoRepo) Update(ctx context.Context, data *DmGroupInfo) error

type ProductCustomRepo

type ProductCustomRepo struct {
	// contains filtered or unexported fields
}

func NewProductCustomRepo

func NewProductCustomRepo(in any) *ProductCustomRepo

func (ProductCustomRepo) FindOneByProductID

func (p ProductCustomRepo) FindOneByProductID(ctx context.Context, productID string) (*DmProductCustom, error)

func (ProductCustomRepo) Insert

func (p ProductCustomRepo) Insert(ctx context.Context, data *DmProductCustom) error

func (ProductCustomRepo) Update

func (p ProductCustomRepo) Update(ctx context.Context, data *DmProductCustom) error

type ProductFilter

type ProductFilter struct {
	DeviceType   int64
	ProductName  string
	ProductIDs   []string
	ProductNames []string
	Tags         map[string]string
}

type ProductInfoRepo

type ProductInfoRepo struct {
	// contains filtered or unexported fields
}

func NewProductInfoRepo

func NewProductInfoRepo(in any) *ProductInfoRepo

func (ProductInfoRepo) CountByFilter

func (p ProductInfoRepo) CountByFilter(ctx context.Context, f ProductFilter) (size int64, err error)

func (ProductInfoRepo) DeleteByFilter

func (p ProductInfoRepo) DeleteByFilter(ctx context.Context, f ProductFilter) error

func (ProductInfoRepo) FindByFilter

func (p ProductInfoRepo) FindByFilter(ctx context.Context, f ProductFilter, page *def.PageInfo) ([]*DmProductInfo, error)

func (ProductInfoRepo) FindOneByFilter

func (p ProductInfoRepo) FindOneByFilter(ctx context.Context, f ProductFilter) (*DmProductInfo, error)

func (ProductInfoRepo) Insert

func (p ProductInfoRepo) Insert(ctx context.Context, data *DmProductInfo) error

func (ProductInfoRepo) Update

func (p ProductInfoRepo) Update(ctx context.Context, data *DmProductInfo) error

type ProductRemoteConfigRepo

type ProductRemoteConfigRepo struct {
	// contains filtered or unexported fields
}

func NewProductRemoteConfigRepo

func NewProductRemoteConfigRepo(in any) *ProductRemoteConfigRepo

func (ProductRemoteConfigRepo) CountByFilter

func (p ProductRemoteConfigRepo) CountByFilter(ctx context.Context, f RemoteConfigFilter) (size int64, err error)

func (ProductRemoteConfigRepo) DeleteByFilter

func (ProductRemoteConfigRepo) FindByFilter

func (ProductRemoteConfigRepo) FindOneByFilter

func (ProductRemoteConfigRepo) Insert

func (ProductRemoteConfigRepo) Update

type ProductSchemaFilter

type ProductSchemaFilter struct {
	ID          int64
	ProductID   string   //产品id  必填
	Type        int64    //物模型类型 1:property属性 2:event事件 3:action行为
	Tag         int64    //过滤条件: 物模型标签 1:自定义 2:可选 3:必选
	Identifiers []string //过滤标识符列表
}

type ProductSchemaRepo

type ProductSchemaRepo struct {
	// contains filtered or unexported fields
}

func NewProductSchemaRepo

func NewProductSchemaRepo(in any) *ProductSchemaRepo

func (ProductSchemaRepo) CountByFilter

func (p ProductSchemaRepo) CountByFilter(ctx context.Context, f ProductSchemaFilter) (size int64, err error)

func (ProductSchemaRepo) DeleteByFilter

func (p ProductSchemaRepo) DeleteByFilter(ctx context.Context, f ProductSchemaFilter) error

func (ProductSchemaRepo) FindByFilter

func (ProductSchemaRepo) FindOneByFilter

func (ProductSchemaRepo) Insert

func (p ProductSchemaRepo) Insert(ctx context.Context, data *DmProductSchema) error

func (ProductSchemaRepo) Update

func (p ProductSchemaRepo) Update(ctx context.Context, data *DmProductSchema) error

type PropertyDef

type PropertyDef struct {
	IsUseShadow bool                `json:"isUseShadow"` //是否使用设备影子
	IsNoRecord  bool                `json:"isNoRecord"`  //不存储历史记录
	Define      schema.Define       `json:"define"`      //数据定义
	Mode        schema.PropertyMode `json:"mode"`        //读写类型: 1:r(只读) 2:rw(可读可写)
}

type RemoteConfigFilter

type RemoteConfigFilter struct {
	ProductID string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL