HM-SPMS/product/common/sysconfig/potobuf/DbSaveMessage.proto

195 lines
8.7 KiB
Protocol Buffer
Raw Normal View History

2025-03-13 11:01:20 +08:00
//========================================================================================
// @file DbSaveMessage.proto
// @brief 关系库存库服务db_save使用的消息结构
// @author xuyang yikenan
//========================================================================================
syntax="proto2";
package iot_idl;
// 用到了SVariable
import "Public.proto";
// 缩写说明:
// DSS : Database Save Server 关系库存库服务程序
// APP : Application 应用程序,比如告警服务
// SRV : Server 服务端程序(存库服务)
// CLT : Client 客户端程序(暂无)
//========================================================================================
// 消息类型枚举
//========================================================================================
enum enDssMsgType
{
// CMbMessagePara1是消息序号Para2是DomainID
MT_DSS_APP2SRV_INSERT = 10; // 应用程序插入
MT_DSS_APP2SRV_REMOVE = 20; // 应用程序删除
MT_DSS_APP2SRV_REMOVEMULTI = 21; // 应用程序批量删除
MT_DSS_APP2SRV_UPDATE = 30; // 应用程序更新
MT_DSS_APP2SRV_UPDATEMULTI = 31; // 应用程序批量更新
MT_DSS_SRV2APP_ACK = 100; // 服务回复确认收到消息
}
//========================================================================================
// save_action 类型枚举
//========================================================================================
enum enDssSaveAction
{
SA_DSS_DO_NOTHING = 0; // 无
SA_DSS_LOCAL_ONLY = 1; // 仅保存到本域时序库
SA_DSS_REMOTE_ONLY = 2; // 仅保存到远程域时序库
SA_DSS_LOCAL_REMOTE = 3; // 保存到本域以及远程域时序库
}
//========================================================================================
// 数据库查询条件等效于SQL
// 括号开始(如果有) strColumnName enRelation msgValue 括号结束(如果有) enLogic
// 举例:
// {enumCondAnd,enumCondEqual,enumBracketStart,"Col_AAA",111} 等效SQL片段
// ( Col_AAA = 111 and
//========================================================================================
message DbCondition
{
optional ENConditionLogic enLogic = 1;
required ENConditionRelation enRelation = 2;
// 括号,暂无需求,未实现。用于改变优先级,枚举值有:无,括号开始,括号结束
// ENConditionBracket 的定义在 Public.proto
// optional ENConditionBracket enBracket = xxx;
required string strColumnName = 3;
required SVariable msgValue = 4;
}
//< 查询条件头,不包含值,用于批量操作,避免重复传入列名
message DbConditionHead
{
optional ENConditionLogic enLogic = 1;
required ENConditionRelation enRelation = 2;
// 括号,暂无需求,未实现。用于改变优先级,枚举值有:无,括号开始,括号结束
// ENConditionBracket 的定义在 Public.proto
// optional ENConditionBracket enBracket = xxx;
required string strColumnName = 3;
}
//========================================================================================
// 值的序列,用于表示一条记录,或一个条件
//========================================================================================
message DbValueArray
{
repeated SVariable msgValue = 1; //< 列的值,顺序与列名对应
}
//========================================================================================
// 更新的数据
//========================================================================================
message DbUpdateValue
{
required string strColumnName = 1;
required SVariable msgValue = 2;
}
//========================================================================================
// 插入
//========================================================================================
message DbInsert
{
required enDssSaveAction enSaveAction = 1;
required string strTableName = 2;
repeated string strColumnName = 3;
repeated DbValueArray msgRecord = 4;
}
//========================================================================================
// 删除等效于SQL
// delete from strTableName where msgCondition[i]子语句见DbCondition注释 ...
// 条件子语句举例:
// msgCondtionArray = [{enumCondOr,enumCondEqual,enumBracketStart,"Col_AAA","A1"},
// {enumCondAnd,enumCondEqual,enumBracketEnd,"Col_BBB","B1"},
// {enumCondAnd,enumCondEqual,enumBracketNone,"Col_CCC","C1"}]
// 等效SQL条件语句
// where ( Col_AAA = 'A1' or Col_BBB = 'B1' ) and Col_CCC = 'C1'
//========================================================================================
message DbRemove
{
required enDssSaveAction enSaveAction = 1;
required string strTableName = 2;
repeated DbCondition msgCondtionArray = 3;
}
//========================================================================================
// 批量删除避免频繁传入列名。每个msgConditionValue[i]与msgConditionHead组合等效于一个DbCondition
// delete from strTableName where msgConditionValue[i]子语句见DbCondition注释 ...
// 条件子语句举例:
// msgConditionHead = [{enumCondOr,enumCondEqual,enumBracketStart,"Col_AAA"},
// {enumCondAnd,enumCondEqual,enumBracketEnd,"Col_BBB"}]
// msgConditionValue = [{"A1","B1"},{"A2","B2"}]
// 等效SQL条件语句
// where ( Col_AAA = 'A1' or Col_BBB = 'B1' ) and ( Col_AAA = 'A2' or Col_BBB = 'B2' )
//========================================================================================
message DbRemoveMulti
{
required enDssSaveAction enSaveAction = 1;
required string strTableName = 2;
repeated DbConditionHead msgConditionHead = 3;
repeated DbValueArray msgConditionValue = 4; //< Value中的值的顺序与Head中对应
}
//========================================================================================
// 更新等效于SQL
// update strTableName set msgUpdateValue[i].strColumnName = msgUpdateValue[i].msgValue ...
// where msgCondition[i]子语句见DbCondition注释 ...
// 条件子语句举例:
// msgCondtionArray = [{enumCondOr,enumCondEqual,enumBracketStart,"Col_AAA","A1"},
// {enumCondAnd,enumCondEqual,enumBracketEnd,"Col_BBB","B1"},
// {enumCondAnd,enumCondEqual,enumBracketNone,"Col_CCC","C1"}]
// 等效SQL条件语句
// where ( Col_AAA = 'A1' or Col_BBB = 'B1' ) and Col_CCC = 'C1'
//========================================================================================
message DbUpdate
{
required enDssSaveAction enSaveAction = 1;
required string strTableName = 2;
repeated DbUpdateValue msgUpdateValue = 3;
repeated DbCondition msgCondition = 4;
}
//========================================================================================
// 批量更新避免频繁传入列名。每个msgConditionValue[i]与msgConditionHead组合等效于一个DbCondition
// update strTableName set msgUpdateValue[i].strColumnName = msgUpdateValue[i].msgValue ...
// where msgConditionValue[i]子语句见DbCondition注释 ...
// 条件子语句举例:
// msgConditionHead = [{enumCondOr,enumCondEqual,enumBracketStart,"Col_AAA"},
// {enumCondAnd,enumCondEqual,enumBracketEnd,"Col_BBB"}]
// msgConditionValue = [{"A1","B1"},{"A2","B2"}]
// 等效SQL条件语句
// where ( Col_AAA = 'A1' or Col_BBB = 'B1' ) and ( Col_AAA = 'A2' or Col_BBB = 'B2' )
//========================================================================================
message DbUpdateMulti
{
required enDssSaveAction enSaveAction = 1;
required string strTableName = 2;
repeated DbUpdateValue msgUpdateValue = 3;
repeated DbConditionHead msgConditionHead = 4;
repeated DbValueArray msgConditionValue = 5; //< Value中的值的顺序与Head中对应
}
//========================================================================================
// DbSave服务内部使用
//========================================================================================
message DbRequest
{
//< 注意:以下只允许一个有值
optional DbInsert msgInsert = 1;
optional DbRemove msgRemove = 2;
optional DbRemoveMulti msgRemoveMulti = 3;
optional DbUpdate msgUpdate = 4;
optional DbUpdateMulti msgUpdateMulti = 5;
}