fix: Remove project (#538)

* Remove project added

* Gemeriert

* corrections

* corrections

* Delete*sByProjectID added

* Correct typos
This commit is contained in:
Michael Waeger
2020-08-05 18:32:25 +02:00
committed by GitHub
parent ade09724a4
commit 41fa434439
39 changed files with 12243 additions and 21919 deletions

View File

@@ -80,6 +80,33 @@ func (repo *ProjectRepo) ReactivateProject(ctx context.Context, id string) (*pro
return repo.ProjectEvents.ReactivateProject(ctx, id)
}
func (repo *ProjectRepo) RemoveProject(ctx context.Context, projectID string) error {
proj := proj_model.NewProject(projectID)
aggregates := make([]*es_models.Aggregate, 0)
project, agg, err := repo.ProjectEvents.PrepareRemoveProject(ctx, proj)
if err != nil {
return err
}
aggregates = append(aggregates, agg)
// remove user_grants
usergrants, err := repo.View.UserGrantsByProjectID(projectID)
if err != nil {
return err
}
for _, grant := range usergrants {
_, aggs, err := repo.UserGrantEvents.PrepareRemoveUserGrant(ctx, grant.ID, true)
if err != nil {
return err
}
for _, agg := range aggs {
aggregates = append(aggregates, agg)
}
}
return es_sdk.PushAggregates(ctx, repo.Eventstore.PushAggregates, project.AppendEvents, aggregates...)
}
func (repo *ProjectRepo) SearchProjects(ctx context.Context, request *proj_model.ProjectViewSearchRequest) (*proj_model.ProjectViewSearchResponse, error) {
request.EnsureLimit(repo.SearchLimit)
sequence, err := repo.View.GetLatestProjectSequence()

View File

@@ -57,6 +57,8 @@ func (p *Application) Reduce(event *models.Event) (err error) {
return err
}
return p.view.DeleteApplication(app.ID, event.Sequence)
case es_model.ProjectRemoved:
return p.view.DeleteApplicationsByProjectID(event.AggregateID)
default:
return p.view.ProcessedApplicationSequence(event.Sequence)
}

View File

@@ -45,6 +45,8 @@ func (p *Project) Reduce(event *models.Event) (err error) {
return err
}
err = project.AppendEvent(event)
case es_model.ProjectRemoved:
return p.view.DeleteProject(event.AggregateID, event.Sequence)
default:
return p.view.ProcessedProjectSequence(event.Sequence)
}

View File

@@ -86,6 +86,8 @@ func (p *ProjectGrant) Reduce(event *models.Event) (err error) {
return err
}
return p.view.DeleteProjectGrant(grant.GrantID, event.Sequence)
case es_model.ProjectRemoved:
return p.view.DeleteProjectGrantsByProjectID(event.AggregateID)
default:
return p.view.ProcessedProjectGrantSequence(event.Sequence)
}

View File

@@ -70,6 +70,9 @@ func (p *ProjectGrantMember) processProjectGrantMember(event *models.Event) (err
return err
}
return p.view.DeleteProjectGrantMember(member.GrantID, member.UserID, event.Sequence)
case proj_es_model.ProjectRemoved:
return p.view.DeleteProjectGrantMembersByProjectID(event.AggregateID)
default:
return p.view.ProcessedProjectGrantMemberSequence(event.Sequence)
}

View File

@@ -70,6 +70,8 @@ func (p *ProjectMember) processProjectMember(event *models.Event) (err error) {
return err
}
return p.view.DeleteProjectMember(event.AggregateID, member.UserID, event.Sequence)
case proj_es_model.ProjectRemoved:
return p.view.DeleteProjectMembersByProjectID(event.AggregateID)
default:
return p.view.ProcessedProjectMemberSequence(event.Sequence)
}

View File

@@ -53,6 +53,8 @@ func (p *ProjectRole) Reduce(event *models.Event) (err error) {
return err
}
return p.view.DeleteProjectRole(event.AggregateID, event.ResourceOwner, role.Key, event.Sequence)
case es_model.ProjectRemoved:
return p.view.DeleteProjectRolesByProjectID(event.AggregateID)
default:
return p.view.ProcessedProjectRoleSequence(event.Sequence)
}

View File

@@ -15,6 +15,10 @@ func (v *View) ApplicationByID(appID string) (*model.ApplicationView, error) {
return view.ApplicationByID(v.Db, applicationTable, appID)
}
func (v *View) ApplicationsByProjectID(ProjectID string) ([]*model.ApplicationView, error) {
return view.ApplicationsByProjectID(v.Db, applicationTable, ProjectID)
}
func (v *View) SearchApplications(request *proj_model.ApplicationSearchRequest) ([]*model.ApplicationView, uint64, error) {
return view.SearchApplications(v.Db, applicationTable, request)
}
@@ -35,6 +39,10 @@ func (v *View) DeleteApplication(appID string, eventSequence uint64) error {
return v.ProcessedApplicationSequence(eventSequence)
}
func (v *View) DeleteApplicationsByProjectID(ProjectID string) error {
return view.DeleteApplicationsByProjectID(v.Db, applicationTable, ProjectID)
}
func (v *View) GetLatestApplicationSequence() (*repository.CurrentSequence, error) {
return v.latestSequence(applicationTable)
}

View File

@@ -47,6 +47,10 @@ func (v *View) DeleteProjectGrant(grantID string, eventSequence uint64) error {
return v.ProcessedProjectGrantSequence(eventSequence)
}
func (v *View) DeleteProjectGrantsByProjectID(projectID string) error {
return view.DeleteProjectGrantsByProjectID(v.Db, grantedProjectTable, projectID)
}
func (v *View) GetLatestProjectGrantSequence() (*repository.CurrentSequence, error) {
return v.latestSequence(grantedProjectTable)
}

View File

@@ -15,6 +15,10 @@ func (v *View) ProjectGrantMemberByIDs(projectID, userID string) (*model.Project
return view.ProjectGrantMemberByIDs(v.Db, projectGrantMemberTable, projectID, userID)
}
func (v *View) ProjectGrantMembersByProjectID(projectID string) ([]*model.ProjectGrantMemberView, error) {
return view.ProjectGrantMembersByProjectID(v.Db, projectGrantMemberTable, projectID)
}
func (v *View) SearchProjectGrantMembers(request *proj_model.ProjectGrantMemberSearchRequest) ([]*model.ProjectGrantMemberView, uint64, error) {
return view.SearchProjectGrantMembers(v.Db, projectGrantMemberTable, request)
}
@@ -39,6 +43,10 @@ func (v *View) DeleteProjectGrantMember(grantID, userID string, eventSequence ui
return v.ProcessedProjectGrantMemberSequence(eventSequence)
}
func (v *View) DeleteProjectGrantMembersByProjectID(projectID string) error {
return view.DeleteProjectGrantMembersByProjectID(v.Db, projectGrantMemberTable, projectID)
}
func (v *View) GetLatestProjectGrantMemberSequence() (*repository.CurrentSequence, error) {
return v.latestSequence(projectGrantMemberTable)
}

View File

@@ -15,6 +15,10 @@ func (v *View) ProjectMemberByIDs(projectID, userID string) (*model.ProjectMembe
return view.ProjectMemberByIDs(v.Db, projectMemberTable, projectID, userID)
}
func (v *View) ProjectMembersByProjectID(projectID string) ([]*model.ProjectMemberView, error) {
return view.ProjectMembersByProjectID(v.Db, projectMemberTable, projectID)
}
func (v *View) SearchProjectMembers(request *proj_model.ProjectMemberSearchRequest) ([]*model.ProjectMemberView, uint64, error) {
return view.SearchProjectMembers(v.Db, projectMemberTable, request)
}
@@ -39,6 +43,10 @@ func (v *View) DeleteProjectMember(projectID, userID string, eventSequence uint6
return v.ProcessedProjectMemberSequence(eventSequence)
}
func (v *View) DeleteProjectMembersByProjectID(projectID string) error {
return view.DeleteProjectMembersByProjectID(v.Db, projectMemberTable, projectID)
}
func (v *View) GetLatestProjectMemberSequence() (*repository.CurrentSequence, error) {
return v.latestSequence(projectMemberTable)
}

View File

@@ -15,6 +15,10 @@ func (v *View) ProjectRoleByIDs(projectID, orgID, key string) (*model.ProjectRol
return view.ProjectRoleByIDs(v.Db, projectRoleTable, projectID, orgID, key)
}
func (v *View) ProjectRolesByProjectID(projectID string) ([]*model.ProjectRoleView, error) {
return view.ProjectRolesByProjectID(v.Db, projectRoleTable, projectID)
}
func (v *View) ResourceOwnerProjectRolesByKey(projectID, resourceowner, key string) ([]*model.ProjectRoleView, error) {
return view.ResourceOwnerProjectRolesByKey(v.Db, projectRoleTable, projectID, resourceowner, key)
}
@@ -43,6 +47,10 @@ func (v *View) DeleteProjectRole(projectID, orgID, key string, eventSequence uin
return v.ProcessedProjectRoleSequence(eventSequence)
}
func (v *View) DeleteProjectRolesByProjectID(projectID string) error {
return view.DeleteProjectRolesByProjectID(v.Db, projectRoleTable, projectID)
}
func (v *View) GetLatestProjectRoleSequence() (*repository.CurrentSequence, error) {
return v.latestSequence(projectRoleTable)
}

View File

@@ -12,6 +12,7 @@ type ProjectRepository interface {
UpdateProject(ctx context.Context, project *model.Project) (*model.Project, error)
DeactivateProject(ctx context.Context, id string) (*model.Project, error)
ReactivateProject(ctx context.Context, id string) (*model.Project, error)
RemoveProject(ctx context.Context, id string) error
SearchProjects(ctx context.Context, request *model.ProjectViewSearchRequest) (*model.ProjectViewSearchResponse, error)
SearchProjectGrants(ctx context.Context, request *model.ProjectGrantViewSearchRequest) (*model.ProjectGrantViewSearchResponse, error)
SearchGrantedProjects(ctx context.Context, request *model.ProjectGrantViewSearchRequest) (*model.ProjectGrantViewSearchResponse, error)