[feat] 新增数据缓存标识
This commit is contained in:
+25
-5
@@ -12,9 +12,29 @@ import (
|
||||
"git.fsdpf.net/go/contracts"
|
||||
"git.fsdpf.net/go/contracts/res_type"
|
||||
"git.fsdpf.net/go/db"
|
||||
"git.fsdpf.net/go/queue"
|
||||
)
|
||||
|
||||
// 资源变更事件
|
||||
const ResChangeEventTopic = "res-change-event-topic"
|
||||
|
||||
// 资源变更数据
|
||||
const ResChangeRecordTopic = "res-change-record-topic"
|
||||
|
||||
type ResChangeEventTopicPayload struct {
|
||||
Type string // insert | delete | update
|
||||
Res Resource // 变更资源
|
||||
Result sql.Result // 执行结果
|
||||
}
|
||||
|
||||
type ResChangeRecordTopicPayload struct {
|
||||
Type string // insert | delete | update
|
||||
User contracts.User // 操作用户
|
||||
Res Resource // 变更资源
|
||||
Result sql.Result // 执行结果
|
||||
Old []map[string]any // 旧数据
|
||||
New []map[string]any // 新数据
|
||||
}
|
||||
|
||||
// 资源
|
||||
type Resource struct {
|
||||
container *do.Injector
|
||||
@@ -290,12 +310,12 @@ func (this Resource) onResEvent(builder *db.Builder) {
|
||||
|
||||
// 全局触发器
|
||||
// 1. 清除系统缓存
|
||||
if err := do.MustInvoke[contracts.Queue](this.container).Publish(contracts.ResQueueTopic, contracts.ResQueuePayload{
|
||||
if err := do.MustInvoke[contracts.Queue](this.container).Publish(ResChangeEventTopic, ResChangeEventTopicPayload{
|
||||
Type: t,
|
||||
Res: this,
|
||||
Result: result,
|
||||
}); err != nil {
|
||||
log.Println("Queue Publish Err:", contracts.ResQueueTopic, err)
|
||||
log.Println("Queue Publish Err:", ResChangeEventTopic, err)
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -326,7 +346,7 @@ func (this Resource) onUserEvent(builder *db.Builder, user contracts.User) {
|
||||
}
|
||||
|
||||
// 触发消息队列
|
||||
if err := do.MustInvoke[contracts.Queue](this.container).Publish(contracts.UserQueuetTopic, contracts.UserQueuePayload{
|
||||
if err := do.MustInvoke[contracts.Queue](this.container).Publish(ResChangeRecordTopic, ResChangeRecordTopicPayload{
|
||||
Type: t,
|
||||
User: user,
|
||||
Res: this,
|
||||
@@ -334,7 +354,7 @@ func (this Resource) onUserEvent(builder *db.Builder, user contracts.User) {
|
||||
New: data,
|
||||
Result: result,
|
||||
}); err != nil {
|
||||
log.Println("Queue Publish Err:", contracts.UserQueuetTopic, err)
|
||||
log.Println("Queue Publish Err:", ResChangeRecordTopic, err)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user