HM-SPMS/product/common/sysconfig/potobuf/DbSaveMessage.proto
2025-03-13 11:01:20 +08:00

195 lines
8.7 KiB
Protocol Buffer
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//========================================================================================
// @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;
}