mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 19:07:30 +00:00
feat: actions (#2377)
* feat(actions): begin api * feat(actions): begin api * api and projections * fix: handle multiple statements for a single event in projections * export func type * fix test * update to new reduce interface * flows in login * feat: jwt idp * feat: command side * feat: add tests * actions and flows * fill idp views with jwt idps and return apis * add jwtEndpoint to jwt idp * begin jwt request handling * add feature * merge * merge * handle jwt idp * cleanup * bug fixes * autoregister * get token from specific header name * fix: proto * fixes * i18n * begin tests * fix and log http proxy * remove docker cache * fixes * usergrants in actions api * tests adn cleanup * cleanup * fix add user grant * set login context * i18n Co-authored-by: fabi <fabienne.gerschwiler@gmail.com>
This commit is contained in:
52
internal/command/flow_model.go
Normal file
52
internal/command/flow_model.go
Normal file
@@ -0,0 +1,52 @@
|
||||
package command
|
||||
|
||||
import (
|
||||
"github.com/caos/zitadel/internal/domain"
|
||||
"github.com/caos/zitadel/internal/eventstore"
|
||||
"github.com/caos/zitadel/internal/repository/flow"
|
||||
)
|
||||
|
||||
type FlowWriteModel struct {
|
||||
eventstore.WriteModel
|
||||
|
||||
FlowType domain.FlowType
|
||||
State domain.FlowState
|
||||
Triggers map[domain.TriggerType][]string
|
||||
}
|
||||
|
||||
func NewFlowWriteModel(flowType domain.FlowType, resourceOwner string) *FlowWriteModel {
|
||||
return &FlowWriteModel{
|
||||
WriteModel: eventstore.WriteModel{
|
||||
AggregateID: resourceOwner,
|
||||
ResourceOwner: resourceOwner,
|
||||
},
|
||||
FlowType: flowType,
|
||||
Triggers: make(map[domain.TriggerType][]string),
|
||||
}
|
||||
}
|
||||
|
||||
func (wm *FlowWriteModel) Reduce() error {
|
||||
for _, event := range wm.Events {
|
||||
switch e := event.(type) {
|
||||
case *flow.TriggerActionsSetEvent:
|
||||
if wm.Triggers == nil {
|
||||
wm.Triggers = make(map[domain.TriggerType][]string)
|
||||
}
|
||||
wm.Triggers[e.TriggerType] = e.ActionIDs
|
||||
case *flow.TriggerActionsCascadeRemovedEvent:
|
||||
remove(wm.Triggers[e.TriggerType], e.ActionID)
|
||||
case *flow.FlowClearedEvent:
|
||||
wm.Triggers = nil
|
||||
}
|
||||
}
|
||||
return wm.WriteModel.Reduce()
|
||||
}
|
||||
|
||||
func remove(ids []string, id string) {
|
||||
for i := 0; i < len(ids); i++ {
|
||||
if ids[i] == id {
|
||||
ids = append(ids[:i], ids[i+1:]...)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user