Skip to content

Commit

Permalink
Refactor request response (#63)
Browse files Browse the repository at this point in the history
* refactor feature flag and user mapping response & request

* fix typo in create feature flag response message

* add comment in getUserFeatureFlag

* add comment in updateUserFeatureFlag

---------

Co-authored-by: Vikhyat Bhatnagar <52795644+vikhyat187@users.noreply.github.com>
  • Loading branch information
shubham-y and vikhyat187 authored Jan 3, 2024
1 parent 3fde229 commit 9e29421
Show file tree
Hide file tree
Showing 7 changed files with 51 additions and 37 deletions.
2 changes: 1 addition & 1 deletion createFeatureFlag/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ func handler(req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse,
Headers: map[string]string{
"Content-Type": "application/json",
},
Body: "Created feature flag sucessfully",
Body: "Created feature flag successfully",
}
return response, nil
}
Expand Down
4 changes: 3 additions & 1 deletion createUserFeatureFlag/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ func handler(req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse,
userId := req.PathParameters["userId"]
flagId := req.PathParameters["flagId"]

var requestBody models.CreateUserMapping
var requestBody utils.CreateFeatureFlagUserMappingRequest
err := json.Unmarshal([]byte(req.Body), &requestBody)
if err != nil {
log.Printf("Error unmarshal request body: \n %v", err)
Expand Down Expand Up @@ -84,6 +84,8 @@ func handler(req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse,
Status: strings.ToUpper(requestBody.Status),
CreatedAt: time.Now().Unix(),
CreatedBy: requestBody.UserId,
UpdatedAt: time.Now().Unix(),
UpdatedBy: requestBody.UserId,
}

result, err := processPutById(userId, flagId, featureFlagUserMapping)
Expand Down
12 changes: 6 additions & 6 deletions getUserFeatureFlag/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,14 @@ import (
"net/http"

"github.com/Real-Dev-Squad/feature-flag-backend/database"
"github.com/Real-Dev-Squad/feature-flag-backend/models"
"github.com/Real-Dev-Squad/feature-flag-backend/utils"
"github.com/aws/aws-lambda-go/events"
lambda "github.com/aws/aws-lambda-go/lambda"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/dynamodb"
)

func processGetById(userId string, flagId string) (*models.FeatureFlagUserMapping, error) {
func processGetById(userId string, flagId string) (*utils.FeatureFlagUserMappingResponse, error) {

db := database.CreateDynamoDB()

Expand All @@ -23,10 +22,10 @@ func processGetById(userId string, flagId string) (*models.FeatureFlagUserMappin
input := &dynamodb.GetItemInput{
TableName: aws.String(utils.FEATURE_FLAG_USER_MAPPING_TABLE_NAME),
Key: map[string]*dynamodb.AttributeValue{
utils.UserId: {
utils.UserId: { // partition key
S: aws.String(userId),
},
utils.FlagId: {
utils.FlagId: { // sort key
S: aws.String(flagId),
},
},
Expand All @@ -40,8 +39,9 @@ func processGetById(userId string, flagId string) (*models.FeatureFlagUserMappin
if result.Item == nil {
return nil, nil
}
featureFlagUserMapping := new(models.FeatureFlagUserMapping)
err = database.UnmarshalMap(result.Item, &featureFlagUserMapping)

featureFlagUserMapping := new(utils.FeatureFlagUserMappingResponse)
err = dynamodbattribute.UnmarshalMap(result.Item, &featureFlagUserMapping)

if err != nil {
log.Println(err)
Expand Down
5 changes: 2 additions & 3 deletions getUserFeatureFlags/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (
"net/http"

"github.com/Real-Dev-Squad/feature-flag-backend/database"
"github.com/Real-Dev-Squad/feature-flag-backend/models"
"github.com/Real-Dev-Squad/feature-flag-backend/utils"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
Expand All @@ -16,7 +15,7 @@ import (
"github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute"
)

func processGetById(userId string) ([]models.FeatureFlagUserMapping, error) {
func processGetById(userId string) ([]utils.FeatureFlagUserMappingResponse, error) {

db := database.CreateDynamoDB()

Expand All @@ -41,7 +40,7 @@ func processGetById(userId string) ([]models.FeatureFlagUserMapping, error) {
return nil, nil
}

var listOfFeatureFlagUserMapping []models.FeatureFlagUserMapping
var listOfFeatureFlagUserMapping []utils.FeatureFlagUserMappingResponse

err = dynamodbattribute.UnmarshalListOfMaps(result.Items, &listOfFeatureFlagUserMapping)
if err != nil {
Expand Down
10 changes: 0 additions & 10 deletions models/feature-flag-user-mapping.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,3 @@ type FeatureFlagUserMapping struct {
UpdatedAt int64 `json:"updatedAt" dynamodbav:"updatedAt"`
UpdatedBy string `json:"updatedBy" dynamodbav:"updatedBy"`
}

type CreateUserMapping struct {
Status string `json:"status" validate:"required"`
UserId string `json:"userId" validate:"required"`
}

type UpdateUserMapping struct {
Status string `json:"status" validate:"required"`
UserId string `json:"userId" validate:"required"`
}
13 changes: 6 additions & 7 deletions updateUserFeatureFlag/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
"time"

"github.com/Real-Dev-Squad/feature-flag-backend/database"
"github.com/Real-Dev-Squad/feature-flag-backend/models"
"github.com/Real-Dev-Squad/feature-flag-backend/utils"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
Expand All @@ -25,7 +24,7 @@ func init() {
validate = validator.New()
}

func processUpdateByIds(userId string, flagId string, requestBody models.UpdateUserMapping) (*models.FeatureFlagUserMapping, error) {
func processUpdateByIds(userId string, flagId string, requestBody utils.UpdateFeatureFlagUserMappingRequest) (*utils.FeatureFlagUserMappingResponse, error) {

db := database.CreateDynamoDB()

Expand All @@ -34,10 +33,10 @@ func processUpdateByIds(userId string, flagId string, requestBody models.UpdateU
input := &dynamodb.UpdateItemInput{
TableName: aws.String(utils.FEATURE_FLAG_USER_MAPPING_TABLE_NAME),
Key: map[string]*dynamodb.AttributeValue{
utils.UserId: {
utils.UserId: { // partition key
S: aws.String(userId),
},
utils.FlagId: {
utils.FlagId: { // sort key
S: aws.String(flagId),
},
},
Expand Down Expand Up @@ -69,8 +68,8 @@ func processUpdateByIds(userId string, flagId string, requestBody models.UpdateU
return nil, err
}

featureFlagUserMapping := new(models.FeatureFlagUserMapping)
err = database.UnmarshalMap(result.Attributes, &featureFlagUserMapping)
featureFlagUserMapping := new(utils.FeatureFlagUserMappingResponse)
err = dynamodbattribute.UnmarshalMap(result.Attributes, &featureFlagUserMapping)

if err != nil {
return nil, err
Expand All @@ -82,7 +81,7 @@ func handler(req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse,
userId := req.PathParameters["userId"]
flagId := req.PathParameters["flagId"]

var requestBody models.UpdateUserMapping
var requestBody utils.UpdateFeatureFlagUserMappingRequest
err := json.Unmarshal([]byte(req.Body), &requestBody)
if err != nil {
log.Printf("Error unmarshal request body: \n %v", err)
Expand Down
42 changes: 33 additions & 9 deletions utils/RequestResponse.go
Original file line number Diff line number Diff line change
@@ -1,19 +1,43 @@
package utils

type UpdateFeatureFlagRequest struct {
Status string `json:"Status" validate:"required"`
UserId string `json:"UserId" validate:"required"`
Status string `json:"status" validate:"required"`
UserId string `json:"userId" validate:"required"`
}

type CreateFeatureFlagRequest struct {
FlagName string `json:"Name" validate:"required"`
Description string `json:"Description" validate:"required"`
UserId string `json:"UserId" validate:"required"`
FlagName string `json:"name" validate:"required"`
Description string `json:"description" validate:"required"`
UserId string `json:"userId" validate:"required"`
}

type FeatureFlagResponse struct {
Id string `json:"Id"`
Name string `json:"Name"`
Description string `json:"Description"`
Status string `json:"Status"`
Id string `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
Status string `json:"status"`
CreatedAt int64 `json:"createdAt"`
CreatedBy string `json:"createdBy"`
UpdatedAt int64 `json:"updatedAt"`
UpdatedBy string `json:"updatedBy"`
}

type CreateFeatureFlagUserMappingRequest struct {
Status string `json:"status" validate:"required"`
UserId string `json:"userId" validate:"required"`
}

type UpdateFeatureFlagUserMappingRequest struct {
Status string `json:"status" validate:"required"`
UserId string `json:"userId" validate:"required"`
}

type FeatureFlagUserMappingResponse struct {
UserId string `json:"userId"`
FlagId string `json:"flagId"`
Status string `json:"status"`
CreatedAt int64 `json:"createdAt"`
CreatedBy string `json:"createdBy"`
UpdatedAt int64 `json:"updatedAt"`
UpdatedBy string `json:"updatedBy"`
}

0 comments on commit 9e29421

Please sign in to comment.