【TcaplusDB知识库】Tcaplus Go SDK手册(二)

【TcaplusDB知识库】Tcaplus Go SDK手册(二)

4 接口列表

支持命令:

//Generic表插入请求
TcaplusApiInsertReq = 0x0001

//Generic表替换/插入请求
TcaplusApiReplaceReq = 0x0003

//Generic表增量更新请求
TcaplusApiIncreaseReq = 0x0005

//Generic表单条查询请求
TcaplusApiGetReq = 0x0007

//Generic表删除请求
TcaplusApiDeleteReq = 0x0009

//Generic表删除应答
TcaplusApiDeleteRes = 0x000a

//Generic表更新请求
TcaplusApiUpdateReq = 0x001d

//List表查询所有元素请求
TcaplusApiListGetAllReq = 0x000b

//Generic表批量查询请求
TcaplusApiBatchGetReq = 0x0017

//Generic表按索引查询请求
TcaplusApiGetByPartkeyReq = 0x0019

//Generic表按索引更新请求
TcaplusApiUpdateByPartkeyReq = 0x004d

//Generic表按索引删除请求
TcaplusApiDeleteByPartkeyReq = 0x004f

4.1 Client接口

4.1.1 创建tcaplus client

/**
  @brief 创建一个tcaplus api客户端
  @retval 返回客户端指针
**/
func NewClient() *Client

4.1.2 日志配置接口

创建client之后,立刻调用

/**
  @brief                   设置API日志配置文件全路径log.conf(json格式,example下有示例),请在client.Dial之前调用
  @param [IN] cfgPath     日志配置文件全路径log.conf
  @retval                 错误码
  @note                   Api日志默认使用的zap,用户也可自行实现日志接口logger.LogInterface,调用SetLogger进行设置
**/
func (c *Client) SetLogCfg(cfgPath string) error

/**
  @brief                   自定义API日志接口,用户实现logger.LogInterface日志接口,日志将打印到用户的日志接口中,请在client.Dial之前调用
  @param [IN] handle       logger.LogInterface类型的日志接口
  @retval                 错误码
**/
func (c *Client) SetLogger(handle logger.LogInterface)

4.1.3 连接tcaplus接口

/**
  @brief 连接tcaplue函数
  @param [IN] appId         appId,在网站注册相应服务以后,你可以得到该appId
  @param [IN] zoneList     需要操作表的区服ID列表,操作的表在多个不同的zone,填zoneId列表;操作的表在一个zone,zone列表填一个zoneId
  @param [IN] signature     签名/密码,在网站注册相应服务以后,你可以得到该字符串
  @param [IN] dirUrl       目录服务器的url,形如"tcp://172.25.40.181:10600"
  @param [IN] timeout       second, 连接所有表对应的tcaplus proxy服务器。若所有的proxy连通且鉴权通过,则立即返回成功;
                              若到达超时时间,只要有一个proxy连通且鉴权通过,也会返回成功;否则返回超时错误。
  @retval                   错误码
**/
func (c *Client) Dial(appId uint64, zoneList []uint32, dirUrl string, signature string, timeout uint32) error

4.1.4 创建tcaplus请求

/**
  @brief 创建指定分区指定表的tcaplus请求
  @param [IN] zoneId             区服ID
  @param [IN] tableName           表名
  @param [IN] cmd                 命令字(cmd包中cmd.TcaplusApiGetReq等)
  @retval request.TcaplusRequest tcaplus请求
  @retval error                   错误码
*/
func (c *Client) NewRequest(zoneId uint32, tableName string, cmd int) (request.TcaplusRequest, error)

4.1.5 发送tcaplus请求

/**
  @brief 发送tcaplus请求
  @param [IN] req       tcaplus请求
  @retval error         错误码
*/
func (c *Client) SendRequest(req request.TcaplusRequest) error

4.1.6 异步接收tcaplus响应

/**
  @brief 异步接收tcaplus响应
  @retval response.TcaplusResponse tcaplus响应
  @retval error 错误码
          error nil,response nil 成功但当前无响应消息
          error nil, response 非nil,成功获取响应消息
          error 非nil,接收响应出错
*/
func (c *Client) RecvResponse() (response.TcaplusResponse, error)

4.1.7 发送tcaplus同步请求并接受响应

/**
  @brief 发送tcaplus同步请求并接受响应
  @param [IN] req tcaplus请求
  @param [IN] timeout 超时时间
  @retval response.TcaplusResponse tcaplus响应
  @retval error 错误码
          error nil,response nil 成功但当前无响应消息
          error nil, response 非nil,成功获取响应消息
          error 非nil,接收响应出错
**/
func (c *Client) Do(req request.TcaplusRequest, timeout time.Duration) (response.TcaplusResponse, error)

4.2 TcaplusRequest接口

4.2.1 添加记录

/**
@brief 向请求中添加一条记录。
@param [IN] index 用于List操作(目前不支持),通常>=0,表示该Record在所属List中的Index;对于Generic操作,index无意义,设0即可
@retval record.Record 返回记录指针
@retval error 错误码
**/
AddRecord(index int32) (*record.Record, error)

4.2.2 设置请求异步ID

/**
@brief 设置请求的异步事务ID,api会将其值不变地通过对应的响应消息带回来
@param [IN] asyncId 请求对应的异步事务ID
**/
SetAsyncId(id uint64)

4.2.3 设置版本校验规则

/**
@brief 设置记录版本的检查类型,用于乐观锁
@param [IN] type 版本检测类型,取值可以为(policy包中):
CheckDataVersionAutoIncrease: 表示检测记录版本号,只有当record.SetVersion函数传入的参数version的值>0,并且版本号与服务器端的版本号相同时,请求才会成功同时在服务器端该版本号会自增1;如果record.SetVersion的version <=0,则仍然表示不关心版本号
NoCheckDataVersionOverwrite: 表示不检测记录版本号。当record.SetVersion函数传入的参数version的值>0,覆盖服务端的版本号;如果record.SetVersion的version <=0,则仍然表示不关心版本号
NoCheckDataVersionAutoIncrease: 表示不检测记录版本号,将服务器端的数据记录版本号自增1,若服务器端新写入数据记录则新写入的数据记录的版本号为1
@retval error 错误码
@note 此函数适合Replace, Update操作
**/
SetVersionPolicy(p uint8) error

4.2.4 设置响应标志

/**
@brief 设置响应标志。主要用于Generic表的insert、replace、update、delete操作。
@param [IN] flag 请求标志:
0表示: 只需返回操作执行成功与否
1表示: 操作成功,响应返回与请求字段一致
2表示: 操作成功,响应返回变更记录的所有字段最新数据
3表示: 操作成功,响应返回变更记录的所有字段旧数据
@retval error 错误码
**/
SetResultFlag(flag int) error

4.2.5 部分字段查询和更新

/**
@brief 设置需要查询或更新的Value字段名称列表,即部分Value字段查询和更新,可用于get、replace、update操作。
@param [IN] valueNameList 需要查询或更新的字段名称列表
@retval error 错误码
@note 在使用该函数设置字段名时,字段名只能包含value字段名,不能包含key字段名;对于数组类型的字段,refer字段和数组字段要同时设置或者同时不设置,否则容易数据错乱
**/
SetFieldNames(valueNameList []string) error

4.2.6 设置用户缓存

/**
@brief 设置用户缓存,响应消息将携带返回
@param [IN] userBuffer 用户缓存
@retval error 错误码
**/
SetUserBuff(userBuffer []byte) error

4.3 Record接口

4.3.1 SetKey/SetValue和GetKey/GetValue接口

通过KV接口,对记录进行赋值(请求消息)和获取(响应消息)

/**
@brief key字段内容设置
@param [in] name 字段名称,最大长度32
@param [in] data 字段内容
@retval error 错误码
*/
func (r *Record) SetKeyInt8(name string, data int8) error
func (r *Record) SetKeyInt16(name string, data int16) error
func (r *Record) SetKeyInt32(name string, data int32) error
func (r *Record) SetKeyInt64(name string, data int64) error
func (r *Record) SetKeyFloat32(name string, data float32) error
func (r *Record) SetKeyFloat64(name string, data float64) error
func (r *Record) SetKeyStr(name string, data string) error
func (r *Record) SetKeyBlob(name string, data []byte) error

/**
@brief value字段内容设置
@param [in] name 字段名称,最大长度32
@param [in] data 字段内容
@retval error 错误码
*/
func (r *Record) SetValueInt8(name string, data int8) error
func (r *Record) SetValueInt16(name string, data int16) error
func (r *Record) SetValueInt32(name string, data int32) error
func (r *Record) SetValueInt64(name string, data int64) error
func (r *Record) SetValueFloat32(name string, data float32) error
func (r *Record) SetValueFloat64(name string, data float64) error
func (r *Record) SetValueStr(name string, data string) error
func (r *Record) SetValueBlob(name string, data []byte) error

/**
@brief key字段内容获取
@param [in] name 字段名称,最大长度32
@retval data 字段内容
@retval error 错误码
*/
func (r *Record) GetKeyInt8(name string) (int8, error)
func (r *Record) GetKeyInt16(name string) (int16, error)
func (r *Record) GetKeyInt32(name string) (int32, error)
func (r *Record) GetKeyInt64(name string) (int64, error)
func (r *Record) GetKeyFloat32(name string) (float32, error)
func (r *Record) GetKeyFloat64(name string) (float64, error)
func (r *Record) GetKeyStr(name string) (string, error)
func (r *Record) GetKeyBlob(name string) ([]byte, error)

/**
@brief value字段内容获取
@param [in] name 字段名称,最大长度32
@retval data 字段内容
@retval error 错误码
*/
func (r *Record) GetValueInt8(name string) (int8, error)
func (r *Record) GetValueInt16(name string) (int16, error)
func (r *Record) GetValueInt32(name string) (int32, error)
func (r *Record) GetValueInt64(name string) (int64, error)
func (r *Record) GetValueFloat32(name string) (float32, error)
func (r *Record) GetValueFloat64(name string) (float64, error)
func (r *Record) GetValueStr(name string) (string, error)
func (r *Record) GetValueBlob(name string) ([]byte, error)

4.3.2 SetData和GetData接口

通过TDR结构体,对记录进行赋值(请求消息)和获取(响应消息)

/**
@brief 基于TDR描述设置record数据
@param [IN] data 基于TDR描述record接口数据,tdr的xml通过工具生成的go结构体,包含的TdrTableSt接口的一系列方法
@retval error 错误码
*/
func (r *Record) SetData(data TdrTableSt) error

/**
@brief 基于TDR描述读取record数据
@param [IN] data 基于TDR描述record接口数据,tdr的xml通过工具生成的go结构体,包含的TdrTableSt接口的一系列方法
@retval error 错误码
**/
func (r *Record) GetData(data TdrTableSt) error

4.3.3 设置记录版本号

/**
@brief 设置记录版本号
@param [IN] v 数据记录的版本号: <=0 表示不关注版本号不关心版本号。具体含义如下。
当CHECKDATAVERSION_AUTOINCREASE时: 表示检测记录版本号。
如果Version的值<=0,则仍然表示不关心版本号不关注版本号;
如果Version的值>0,那么只有当该版本号与服务器端的版本号相同时,
Replace, Update, Increase, ListAddAfter, ListDelete, ListReplace, ListDeleteBatch操作才会成功同时在服务器端该版本号会自增1。
当NOCHECKDATAVERSION_OVERWRITE时: 表示不检测记录版本号。
如果Version的值<=0,则会把版本号1写入服务端的数据记录版本号(服务器端成功写入的数据记录的版本号最少为1);
如果Version的值>0,那么会把该版本号写入服务端的数据记录版本号。
当NOCHECKDATAVERSION_AUTOINCREASE时: 表示不检测记录版本号,将服务器端的数据记录版本号自增1,若服务器端新写入数据记录则新写入的数据记录的版本号为1。
**/
func (r *Record) SetVersion(v int32)

4.3.4 获取记录版本号

/**
@brief 获取记录版本号
@retval 记录版本号
**/
func (r *Record) GetVersion() int32

4.4 TcaplusResponse接口

4.4.1 获取响应结果

/*
@brief 获取响应结果
@retval int tcaplus api自定义错误码。 0,表示请求成功;非0,有错误码,可从terror.GetErrMsg(int)得到错误消息
*/
GetResult() int

4.4.2 获取表名

/*
@brief 获取响应表名
@retval string 响应消息对应的表名称
*/
GetTableName() string

4.4.3 获取appId

/*
@brief 获取响应appId
@retval uint64 响应消息对应的appId
*/
GetAppId() uint64

4.4.4 获取zoneId

/*
@brief 获取响应zoneId
@retval uint32 响应消息对应的zoneId
*/
GetZoneId() uint32

4.4.5 获取响应命令字

/*
@brief 获取响应命令
@retval int 响应消息命令字,cmd包中的响应命令字
*/
GetCmd() int

4.4.6 获取响应异步ID

/*
@brief 获取响应异步id,和请求对应
@retval uint64 响应消息对应的异步id和请求对应
*/
GetAsyncId() uint64

4.4.7 获取响应中记录数

/*
@brief 获取本响应中结果记录条数
@retval int 响应中结果记录条数
*/
GetRecordCount() int

4.4.8 获取响应中一条记录

/*
@brief 从结果中获取一条记录
@retval *record.Record 记录指针
@retval error 错误码
*/
FetchRecord() (*record.Record, error)

4.4.9 获取响应中用户缓存信息

/**
@brief 获取响应消息中的用户缓存信息
@retval []byte 用户缓存二进制,和请求消息中的buffer内容一致
*/
GetUserBuffer() []byte

4.4.10 获取响应中的序列号

/**
@brief 获取响应消息中的序列号
**/
GetSeq() int32

 


 

【TcaplusDB知识库】Tcaplus Go SDK手册(二)

TcaplusDB是腾讯出品的分布式NoSQL数据库,存储和调度的代码完全自研。具备缓存+落地融合架构、PB级存储、毫秒级时延、无损水平扩展和复杂数据结构等特性。同时具备丰富的生态、便捷的迁移、极低的运维成本和五个九高可用等特点。客户覆盖游戏、互联网、政务、金融、制造和物联网等领域。

上一篇:TcaplusDB君 · 行业新闻汇编(一)


下一篇:AutoMapper用法