fix(fields): project by id and resource owner (#10034)

# Which Problems Are Solved

If the `IMPROVED_PERFORMANCE_PROJECT` feature flag was enabled it was
not possible to remove organizations anymore because the project was
searched in the `eventstore.fields` table without resource owner.

# How the Problems Are Solved

Search now includes resource owner.
This commit is contained in:
Silvan
2025-06-05 13:42:59 +02:00
committed by GitHub
parent 63c92104ba
commit 6c309d65c6

View File

@@ -138,14 +138,14 @@ func projectWriteModel(ctx context.Context, filter preparation.FilterToQueryRedu
return project, nil return project, nil
} }
func (c *Commands) projectAggregateByID(ctx context.Context, projectID string) (*eventstore.Aggregate, domain.ProjectState, error) { func (c *Commands) projectAggregateByID(ctx context.Context, projectID, resourceOwner string) (*eventstore.Aggregate, domain.ProjectState, error) {
result, err := c.projectState(ctx, projectID) result, err := c.projectState(ctx, projectID, resourceOwner)
if err != nil { if err != nil {
return nil, domain.ProjectStateUnspecified, zerrors.ThrowNotFound(err, "COMMA-NDQoF", "Errors.Project.NotFound") return nil, domain.ProjectStateUnspecified, zerrors.ThrowNotFound(err, "COMMA-NDQoF", "Errors.Project.NotFound")
} }
if len(result) == 0 { if len(result) == 0 {
_ = projection.ProjectGrantFields.Trigger(ctx) _ = projection.ProjectGrantFields.Trigger(ctx)
result, err = c.projectState(ctx, projectID) result, err = c.projectState(ctx, projectID, resourceOwner)
if err != nil || len(result) == 0 { if err != nil || len(result) == 0 {
return nil, domain.ProjectStateUnspecified, zerrors.ThrowNotFound(err, "COMMA-U1nza", "Errors.Project.NotFound") return nil, domain.ProjectStateUnspecified, zerrors.ThrowNotFound(err, "COMMA-U1nza", "Errors.Project.NotFound")
} }
@@ -159,7 +159,7 @@ func (c *Commands) projectAggregateByID(ctx context.Context, projectID string) (
return &result[0].Aggregate, state, nil return &result[0].Aggregate, state, nil
} }
func (c *Commands) projectState(ctx context.Context, projectID string) ([]*eventstore.SearchResult, error) { func (c *Commands) projectState(ctx context.Context, projectID, resourceOwner string) ([]*eventstore.SearchResult, error) {
return c.eventstore.Search( return c.eventstore.Search(
ctx, ctx,
map[eventstore.FieldType]any{ map[eventstore.FieldType]any{
@@ -167,6 +167,7 @@ func (c *Commands) projectState(ctx context.Context, projectID string) ([]*event
eventstore.FieldTypeObjectID: projectID, eventstore.FieldTypeObjectID: projectID,
eventstore.FieldTypeObjectRevision: project.ProjectObjectRevision, eventstore.FieldTypeObjectRevision: project.ProjectObjectRevision,
eventstore.FieldTypeFieldName: project.ProjectStateSearchField, eventstore.FieldTypeFieldName: project.ProjectStateSearchField,
eventstore.FieldTypeResourceOwner: resourceOwner,
}, },
) )
} }
@@ -179,7 +180,7 @@ func (c *Commands) checkProjectExists(ctx context.Context, projectID, resourceOw
return c.checkProjectExistsOld(ctx, projectID, resourceOwner) return c.checkProjectExistsOld(ctx, projectID, resourceOwner)
} }
agg, state, err := c.projectAggregateByID(ctx, projectID) agg, state, err := c.projectAggregateByID(ctx, projectID, resourceOwner)
if err != nil || !state.Valid() { if err != nil || !state.Valid() {
return "", zerrors.ThrowPreconditionFailed(err, "COMMA-VCnwD", "Errors.Project.NotFound") return "", zerrors.ThrowPreconditionFailed(err, "COMMA-VCnwD", "Errors.Project.NotFound")
} }
@@ -249,7 +250,7 @@ func (c *Commands) DeactivateProject(ctx context.Context, projectID string, reso
return c.deactivateProjectOld(ctx, projectID, resourceOwner) return c.deactivateProjectOld(ctx, projectID, resourceOwner)
} }
projectAgg, state, err := c.projectAggregateByID(ctx, projectID) projectAgg, state, err := c.projectAggregateByID(ctx, projectID, resourceOwner)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -285,7 +286,7 @@ func (c *Commands) ReactivateProject(ctx context.Context, projectID string, reso
return c.reactivateProjectOld(ctx, projectID, resourceOwner) return c.reactivateProjectOld(ctx, projectID, resourceOwner)
} }
projectAgg, state, err := c.projectAggregateByID(ctx, projectID) projectAgg, state, err := c.projectAggregateByID(ctx, projectID, resourceOwner)
if err != nil { if err != nil {
return nil, err return nil, err
} }