Skip to content

Commit

Permalink
chore: update API
Browse files Browse the repository at this point in the history
  • Loading branch information
katallaxie authored Jun 18, 2024
1 parent 45cbdb5 commit adaa915
Show file tree
Hide file tree
Showing 6 changed files with 117 additions and 36 deletions.
2 changes: 1 addition & 1 deletion api/api.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1421,7 +1421,7 @@ components:
type: string

Payload:
type: string
type: object
format: binary

securitySchemes:
Expand Down
2 changes: 1 addition & 1 deletion cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ func (s *WebSrv) Start(ctx context.Context, ready server.ReadyFunc, run server.R

validatorOptions := &middleware.Options{}
validatorOptions.Options.AuthenticationFunc = authz.NewOpenAPIAuthenticator(authz.WithAuthzChecker(authz.NewFake(true)))
validatorOptions.ErrorHandler = authz.NewOpenAPIErrorHandler()
// validatorOptions.ErrorHandler = authz.NewOpenAPIErrorHandler()

app.Use(middleware.OapiRequestValidatorWithOptions(swagger, validatorOptions))

Expand Down
7 changes: 7 additions & 0 deletions internal/adapters/handlers/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,13 @@ func (a *apiHandlers) GetEnvironmentState(ctx context.Context, request openapi.G
// Update the state of Terraform environment
// (POST /client/{teamId}/{projectId}/{environmentId}/state)
func (a *apiHandlers) UpdateEnvironmentState(ctx context.Context, request openapi.UpdateEnvironmentStateRequestObject) (openapi.UpdateEnvironmentStateResponseObject, error) {
cmd := dto.FromUpdateEnvironmentStateRequestObject(request)

err := a.state.UpdateState(ctx, cmd)
if err != nil {
return nil, fiber.NewError(fiber.StatusInternalServerError, err.Error())
}

return nil, nil
}

Expand Down
57 changes: 57 additions & 0 deletions internal/controllers/state.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ package controllers

import (
"context"
"encoding/json"

"github.com/zeiss/knox/internal/models"
"github.com/zeiss/knox/internal/ports"
"gorm.io/datatypes"
)

var _ StateController = (*StateControllerImpl)(nil)
Expand All @@ -27,6 +29,8 @@ type UpdateStateControllerCommand struct {
Project string `json:"project" form:"project"`
// Environment is the environment of the lock.
Environment string `json:"environment" form:"environment"`
// State is the state of the lock.
State *map[string]interface{} `json:"state" form:"state"`
}

// StateController ...
Expand Down Expand Up @@ -103,5 +107,58 @@ func (c *StateControllerImpl) GetState(ctx context.Context, query GetStateContro

// UpdateState ...
func (c *StateControllerImpl) UpdateState(ctx context.Context, cmd UpdateStateControllerCommand) error {
team := models.Team{
Slug: cmd.Team,
}

err := c.store.ReadTx(ctx, func(ctx context.Context, tx ports.ReadTx) error {
return tx.GetTeam(ctx, &team)
})
if err != nil {
return err
}

project := models.Project{
Name: cmd.Project,
TeamID: team.ID,
}

err = c.store.ReadTx(ctx, func(ctx context.Context, tx ports.ReadTx) error {
return tx.GetProject(ctx, &project)
})
if err != nil {
return err
}

env := models.Environment{
Name: cmd.Environment,
ProjectID: project.ID,
}

err = c.store.ReadTx(ctx, func(ctx context.Context, tx ports.ReadTx) error {
return tx.GetEnvironment(ctx, &env)
})
if err != nil {
return err
}

b, err := json.Marshal(cmd.State)
if err != nil {
return err
}

state := models.State{
TeamID: team.ID,
ProjectID: project.ID,
EnvironmentID: env.ID,
Data: datatypes.JSON(b),
}
err = c.store.ReadWriteTx(ctx, func(ctx context.Context, tx ports.ReadWriteTx) error {
return tx.UpdateState(ctx, &state)
})
if err != nil {
return err
}

return nil
}
68 changes: 34 additions & 34 deletions pkg/apis/models.gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions pkg/dto/state.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,20 @@ func ToGetEnvironmentStateResponseObject(data []byte) openapi.GetEnvironmentStat

return res
}

// FromUpdateEnvironmentStateRequestObject ...
func FromUpdateEnvironmentStateRequestObject(request openapi.UpdateEnvironmentStateRequestObject) controllers.UpdateStateControllerCommand {
return controllers.UpdateStateControllerCommand{
Team: request.TeamId,
Project: request.ProjectId,
Environment: request.EnvironmentId,
State: request.Body,
}
}

// ToUpdateEnvironmentStateResponseObject ...
func ToUpdateEnvironmentStateResponseObject() openapi.UpdateEnvironmentState200JSONResponse {
res := openapi.UpdateEnvironmentState200JSONResponse{}

return res
}

0 comments on commit adaa915

Please sign in to comment.