mirror of
https://github.com/zitadel/zitadel.git
synced 2025-02-28 23:37:23 +00:00
fix: project by id loads project from view and from eventstore (#315)
This commit is contained in:
parent
3937e76947
commit
3c56fe6a0f
@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"strings"
|
||||
|
||||
"github.com/caos/logging"
|
||||
caos_errs "github.com/caos/zitadel/internal/errors"
|
||||
es_int "github.com/caos/zitadel/internal/eventstore"
|
||||
"github.com/caos/zitadel/internal/eventstore/models"
|
||||
@ -36,9 +37,24 @@ type ProjectRepo struct {
|
||||
|
||||
func (repo *ProjectRepo) ProjectByID(ctx context.Context, id string) (*proj_model.ProjectView, error) {
|
||||
project, err := repo.View.ProjectByID(id)
|
||||
if err != nil {
|
||||
if err != nil && !caos_errs.IsNotFound(err) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
events, err := repo.ProjectEvents.ProjectEventsByID(ctx, id, project.Sequence)
|
||||
if err != nil {
|
||||
logging.Log("EVENT-V9x1V").WithError(err).Debug("error retrieving new events")
|
||||
return model.ProjectToModel(project), nil
|
||||
}
|
||||
|
||||
viewProject := *project
|
||||
for _, event := range events {
|
||||
err := project.AppendEvent(event)
|
||||
if err != nil {
|
||||
return model.ProjectToModel(&viewProject), nil
|
||||
}
|
||||
}
|
||||
|
||||
return model.ProjectToModel(project), nil
|
||||
}
|
||||
|
||||
|
@ -71,6 +71,14 @@ func (es *ProjectEventstore) ProjectByID(ctx context.Context, id string) (*proj_
|
||||
return model.ProjectToModel(project), nil
|
||||
}
|
||||
|
||||
func (es *ProjectEventstore) ProjectEventsByID(ctx context.Context, id string, sequence uint64) ([]*es_models.Event, error) {
|
||||
query, err := ProjectByIDQuery(id, sequence)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return es.FilterEvents(ctx, query)
|
||||
}
|
||||
|
||||
func (es *ProjectEventstore) CreateProject(ctx context.Context, project *proj_model.Project) (*proj_model.Project, error) {
|
||||
if !project.IsValid() {
|
||||
return nil, caos_errs.ThrowPreconditionFailed(nil, "EVENT-9dk45", "Errors.Project.Invalid")
|
||||
|
Loading…
x
Reference in New Issue
Block a user