fix: Fix project roles/grants projection (#2491)

* fix: project role projections reduce change event

* fix: project grant projections reduce change event

* fix: project grant projections reduce change event

* fix: add project removed event
This commit is contained in:
Fabi
2021-10-08 16:17:12 +02:00
committed by GitHub
parent 1ca2d8adde
commit 29c8fa8bde
3 changed files with 46 additions and 32 deletions

View File

@@ -42,6 +42,10 @@ func (p *ProjectRoleProjection) reducers() []handler.AggregateReducer {
Event: project.RoleRemovedType,
Reduce: p.reduceProjectRoleRemoved,
},
{
Event: project.ProjectRemovedType,
Reduce: p.reduceProjectRemoved,
},
},
},
}
@@ -90,14 +94,18 @@ func (p *ProjectRoleProjection) reduceProjectRoleChanged(event eventstore.EventR
if e.DisplayName == nil && e.Group == nil {
return crdb.NewNoOpStatement(e), nil
}
columns := make([]handler.Column, 0, 7)
columns = append(columns, handler.NewCol(ProjectRoleColumnChangeDate, e.CreationDate()),
handler.NewCol(ProjectRoleColumnSequence, e.Sequence()))
if e.DisplayName != nil {
columns = append(columns, handler.NewCol(ProjectRoleColumnDisplayName, *e.DisplayName))
}
if e.Group != nil {
columns = append(columns, handler.NewCol(ProjectRoleColumnGroupName, *e.Group))
}
return crdb.NewUpdateStatement(
e,
[]handler.Column{
handler.NewCol(ProjectColumnChangeDate, e.CreationDate()),
handler.NewCol(ProjectRoleColumnSequence, e.Sequence()),
handler.NewCol(ProjectRoleColumnDisplayName, *e.DisplayName),
handler.NewCol(ProjectRoleColumnGroupName, *e.Group),
},
columns,
[]handler.Condition{
handler.NewCond(ProjectRoleColumnKey, e.Key),
handler.NewCond(ProjectRoleColumnProjectID, e.Aggregate().ID),
@@ -119,3 +127,17 @@ func (p *ProjectRoleProjection) reduceProjectRoleRemoved(event eventstore.EventR
},
), nil
}
func (p *ProjectRoleProjection) reduceProjectRemoved(event eventstore.EventReader) (*handler.Statement, error) {
e, ok := event.(*project.ProjectRemovedEvent)
if !ok {
logging.LogWithFields("HANDL-hm90R", "seq", event.Sequence(), "expectedType", project.ProjectRemovedType).Error("was not an event")
return nil, errors.ThrowInvalidArgument(nil, "HANDL-l0geG", "reduce.wrong.event.type")
}
return crdb.NewDeleteStatement(
e,
[]handler.Condition{
handler.NewCond(ProjectRoleColumnProjectID, e.Aggregate().ID),
},
), nil
}