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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 46 additions and 32 deletions

View File

@ -56,6 +56,10 @@ func (p *ProjectGrantProjection) reducers() []handler.AggregateReducer {
Event: project.GrantRemovedType, Event: project.GrantRemovedType,
Reduce: p.reduceProjectGrantRemoved, Reduce: p.reduceProjectGrantRemoved,
}, },
{
Event: project.ProjectRemovedType,
Reduce: p.reduceProjectRemoved,
},
}, },
}, },
} }
@ -103,10 +107,6 @@ func (p *ProjectGrantProjection) reduceProjectGrantChanged(event eventstore.Even
logging.LogWithFields("HANDL-M00fH", "seq", event.Sequence(), "expectedType", project.GrantChangedType).Error("was not an event") logging.LogWithFields("HANDL-M00fH", "seq", event.Sequence(), "expectedType", project.GrantChangedType).Error("was not an event")
return nil, errors.ThrowInvalidArgument(nil, "HANDL-g0fg4", "reduce.wrong.event.type") return nil, errors.ThrowInvalidArgument(nil, "HANDL-g0fg4", "reduce.wrong.event.type")
} }
if e.RoleKeys == nil {
return crdb.NewNoOpStatement(e), nil
}
return crdb.NewUpdateStatement( return crdb.NewUpdateStatement(
e, e,
[]handler.Column{ []handler.Column{
@ -127,10 +127,6 @@ func (p *ProjectGrantProjection) reduceProjectGrantCascadeChanged(event eventsto
logging.LogWithFields("HANDL-K0fwR", "seq", event.Sequence(), "expectedType", project.GrantCascadeChangedType).Error("was not an event") logging.LogWithFields("HANDL-K0fwR", "seq", event.Sequence(), "expectedType", project.GrantCascadeChangedType).Error("was not an event")
return nil, errors.ThrowInvalidArgument(nil, "HANDL-ll9Ts", "reduce.wrong.event.type") return nil, errors.ThrowInvalidArgument(nil, "HANDL-ll9Ts", "reduce.wrong.event.type")
} }
if e.RoleKeys == nil {
return crdb.NewNoOpStatement(e), nil
}
return crdb.NewUpdateStatement( return crdb.NewUpdateStatement(
e, e,
[]handler.Column{ []handler.Column{
@ -199,3 +195,17 @@ func (p *ProjectGrantProjection) reduceProjectGrantRemoved(event eventstore.Even
}, },
), nil ), nil
} }
func (p *ProjectGrantProjection) reduceProjectRemoved(event eventstore.EventReader) (*handler.Statement, error) {
e, ok := event.(*project.ProjectRemovedEvent)
if !ok {
logging.LogWithFields("HANDL-Ms0fe", "seq", event.Sequence(), "expectedType", project.ProjectRemovedType).Error("was not an event")
return nil, errors.ThrowInvalidArgument(nil, "HANDL-gn9rw", "reduce.wrong.event.type")
}
return crdb.NewDeleteStatement(
e,
[]handler.Condition{
handler.NewCond(ProjectGrantColumnProjectID, e.Aggregate().ID),
},
), nil
}

View File

@ -143,24 +143,6 @@ func TestProjectGrantProjection_reduces(t *testing.T) {
}, },
}, },
}, },
{
name: "reduceProjectGrantChanged no changes",
args: args{
event: getEvent(testEvent(
repository.EventType(project.GrantChangedType),
project.AggregateType,
[]byte(`{}`),
), project.GrantChangedEventMapper),
},
reduce: (&ProjectGrantProjection{}).reduceProjectGrantChanged,
want: wantReduce{
projection: ProjectGrantProjectionTable,
aggregateType: eventstore.AggregateType("project"),
sequence: 15,
previousSequence: 10,
executer: &testExecuter{},
},
},
{ {
name: "reduceProjectGrantAdded", name: "reduceProjectGrantAdded",
args: args{ args: args{

View File

@ -42,6 +42,10 @@ func (p *ProjectRoleProjection) reducers() []handler.AggregateReducer {
Event: project.RoleRemovedType, Event: project.RoleRemovedType,
Reduce: p.reduceProjectRoleRemoved, 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 { if e.DisplayName == nil && e.Group == nil {
return crdb.NewNoOpStatement(e), 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( return crdb.NewUpdateStatement(
e, e,
[]handler.Column{ columns,
handler.NewCol(ProjectColumnChangeDate, e.CreationDate()),
handler.NewCol(ProjectRoleColumnSequence, e.Sequence()),
handler.NewCol(ProjectRoleColumnDisplayName, *e.DisplayName),
handler.NewCol(ProjectRoleColumnGroupName, *e.Group),
},
[]handler.Condition{ []handler.Condition{
handler.NewCond(ProjectRoleColumnKey, e.Key), handler.NewCond(ProjectRoleColumnKey, e.Key),
handler.NewCond(ProjectRoleColumnProjectID, e.Aggregate().ID), handler.NewCond(ProjectRoleColumnProjectID, e.Aggregate().ID),
@ -119,3 +127,17 @@ func (p *ProjectRoleProjection) reduceProjectRoleRemoved(event eventstore.EventR
}, },
), nil ), 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
}