mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 21:17:32 +00:00
fix: handle multiple statements for a single event in projections (#2313)
* fix: handle multiple statements for a single event in projections * export func type * fix test * Update internal/eventstore/handler/crdb/statement.go Co-authored-by: Silvan <silvan.reusser@gmail.com> * Update internal/eventstore/handler/crdb/statement.go Co-authored-by: Silvan <silvan.reusser@gmail.com> * change to pointers * add error test case Co-authored-by: Silvan <silvan.reusser@gmail.com>
This commit is contained in:
@@ -66,89 +66,79 @@ const (
|
||||
projectInactive
|
||||
)
|
||||
|
||||
func (p *ProjectProjection) reduceProjectAdded(event eventstore.EventReader) ([]handler.Statement, error) {
|
||||
func (p *ProjectProjection) reduceProjectAdded(event eventstore.EventReader) (*handler.Statement, error) {
|
||||
e := event.(*project.ProjectAddedEvent)
|
||||
|
||||
return []handler.Statement{
|
||||
crdb.NewCreateStatement(
|
||||
e,
|
||||
[]handler.Column{
|
||||
handler.NewCol(projectIDCol, e.Aggregate().ID),
|
||||
handler.NewCol(projectNameCol, e.Name),
|
||||
handler.NewCol(projectCreationDateCol, e.CreationDate()),
|
||||
handler.NewCol(projectChangeDateCol, e.CreationDate()),
|
||||
handler.NewCol(projectOwnerCol, e.Aggregate().ResourceOwner),
|
||||
handler.NewCol(projectCreatorCol, e.EditorUser()),
|
||||
handler.NewCol(projectStateCol, projectActive),
|
||||
},
|
||||
),
|
||||
}, nil
|
||||
return crdb.NewCreateStatement(
|
||||
e,
|
||||
[]handler.Column{
|
||||
handler.NewCol(projectIDCol, e.Aggregate().ID),
|
||||
handler.NewCol(projectNameCol, e.Name),
|
||||
handler.NewCol(projectCreationDateCol, e.CreationDate()),
|
||||
handler.NewCol(projectChangeDateCol, e.CreationDate()),
|
||||
handler.NewCol(projectOwnerCol, e.Aggregate().ResourceOwner),
|
||||
handler.NewCol(projectCreatorCol, e.EditorUser()),
|
||||
handler.NewCol(projectStateCol, projectActive),
|
||||
},
|
||||
), nil
|
||||
}
|
||||
|
||||
func (p *ProjectProjection) reduceProjectChanged(event eventstore.EventReader) ([]handler.Statement, error) {
|
||||
func (p *ProjectProjection) reduceProjectChanged(event eventstore.EventReader) (*handler.Statement, error) {
|
||||
e := event.(*project.ProjectChangeEvent)
|
||||
|
||||
if e.Name == nil {
|
||||
return []handler.Statement{crdb.NewNoOpStatement(e)}, nil
|
||||
return crdb.NewNoOpStatement(e), nil
|
||||
}
|
||||
|
||||
return []handler.Statement{
|
||||
crdb.NewUpdateStatement(
|
||||
e,
|
||||
[]handler.Column{
|
||||
handler.NewCol(projectNameCol, e.Name),
|
||||
handler.NewCol(projectChangeDateCol, e.CreationDate()),
|
||||
},
|
||||
[]handler.Condition{
|
||||
handler.NewCond(projectIDCol, e.Aggregate().ID),
|
||||
},
|
||||
),
|
||||
}, nil
|
||||
return crdb.NewUpdateStatement(
|
||||
e,
|
||||
[]handler.Column{
|
||||
handler.NewCol(projectNameCol, e.Name),
|
||||
handler.NewCol(projectChangeDateCol, e.CreationDate()),
|
||||
},
|
||||
[]handler.Condition{
|
||||
handler.NewCond(projectIDCol, e.Aggregate().ID),
|
||||
},
|
||||
), nil
|
||||
}
|
||||
|
||||
func (p *ProjectProjection) reduceProjectDeactivated(event eventstore.EventReader) ([]handler.Statement, error) {
|
||||
func (p *ProjectProjection) reduceProjectDeactivated(event eventstore.EventReader) (*handler.Statement, error) {
|
||||
e := event.(*project.ProjectDeactivatedEvent)
|
||||
|
||||
return []handler.Statement{
|
||||
crdb.NewUpdateStatement(
|
||||
e,
|
||||
[]handler.Column{
|
||||
handler.NewCol(projectStateCol, projectInactive),
|
||||
handler.NewCol(projectChangeDateCol, e.CreationDate()),
|
||||
},
|
||||
[]handler.Condition{
|
||||
handler.NewCond(projectIDCol, e.Aggregate().ID),
|
||||
},
|
||||
),
|
||||
}, nil
|
||||
return crdb.NewUpdateStatement(
|
||||
e,
|
||||
[]handler.Column{
|
||||
handler.NewCol(projectStateCol, projectInactive),
|
||||
handler.NewCol(projectChangeDateCol, e.CreationDate()),
|
||||
},
|
||||
[]handler.Condition{
|
||||
handler.NewCond(projectIDCol, e.Aggregate().ID),
|
||||
},
|
||||
), nil
|
||||
}
|
||||
|
||||
func (p *ProjectProjection) reduceProjectReactivated(event eventstore.EventReader) ([]handler.Statement, error) {
|
||||
func (p *ProjectProjection) reduceProjectReactivated(event eventstore.EventReader) (*handler.Statement, error) {
|
||||
e := event.(*project.ProjectReactivatedEvent)
|
||||
|
||||
return []handler.Statement{
|
||||
crdb.NewUpdateStatement(
|
||||
e,
|
||||
[]handler.Column{
|
||||
handler.NewCol(projectStateCol, projectActive),
|
||||
handler.NewCol(projectChangeDateCol, e.CreationDate()),
|
||||
},
|
||||
[]handler.Condition{
|
||||
handler.NewCond(projectIDCol, e.Aggregate().ID),
|
||||
},
|
||||
),
|
||||
}, nil
|
||||
return crdb.NewUpdateStatement(
|
||||
e,
|
||||
[]handler.Column{
|
||||
handler.NewCol(projectStateCol, projectActive),
|
||||
handler.NewCol(projectChangeDateCol, e.CreationDate()),
|
||||
},
|
||||
[]handler.Condition{
|
||||
handler.NewCond(projectIDCol, e.Aggregate().ID),
|
||||
},
|
||||
), nil
|
||||
}
|
||||
|
||||
func (p *ProjectProjection) reduceProjectRemoved(event eventstore.EventReader) ([]handler.Statement, error) {
|
||||
func (p *ProjectProjection) reduceProjectRemoved(event eventstore.EventReader) (*handler.Statement, error) {
|
||||
e := event.(*project.ProjectRemovedEvent)
|
||||
|
||||
return []handler.Statement{
|
||||
crdb.NewDeleteStatement(
|
||||
e,
|
||||
[]handler.Condition{
|
||||
handler.NewCond(projectIDCol, e.Aggregate().ID),
|
||||
},
|
||||
),
|
||||
}, nil
|
||||
return crdb.NewDeleteStatement(
|
||||
e,
|
||||
[]handler.Condition{
|
||||
handler.NewCond(projectIDCol, e.Aggregate().ID),
|
||||
},
|
||||
), nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user