diff --git a/createFeatureFlag/main.go b/createFeatureFlag/main.go index 1557f83..c588e18 100644 --- a/createFeatureFlag/main.go +++ b/createFeatureFlag/main.go @@ -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 } diff --git a/createUserFeatureFlag/main.go b/createUserFeatureFlag/main.go index 91262e9..5bd9634 100644 --- a/createUserFeatureFlag/main.go +++ b/createUserFeatureFlag/main.go @@ -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) @@ -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) diff --git a/getUserFeatureFlag/main.go b/getUserFeatureFlag/main.go index 534cba4..37deea4 100644 --- a/getUserFeatureFlag/main.go +++ b/getUserFeatureFlag/main.go @@ -6,7 +6,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" lambda "github.com/aws/aws-lambda-go/lambda" @@ -14,7 +13,7 @@ import ( "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() @@ -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), }, }, @@ -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) diff --git a/getUserFeatureFlags/main.go b/getUserFeatureFlags/main.go index cecbf26..6e234a1 100644 --- a/getUserFeatureFlags/main.go +++ b/getUserFeatureFlags/main.go @@ -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" @@ -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() @@ -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 { diff --git a/models/feature-flag-user-mapping.go b/models/feature-flag-user-mapping.go index 54d0342..e32755e 100644 --- a/models/feature-flag-user-mapping.go +++ b/models/feature-flag-user-mapping.go @@ -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"` -} diff --git a/updateUserFeatureFlag/main.go b/updateUserFeatureFlag/main.go index 9b28921..fd1df07 100644 --- a/updateUserFeatureFlag/main.go +++ b/updateUserFeatureFlag/main.go @@ -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" @@ -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() @@ -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), }, }, @@ -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 @@ -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) diff --git a/utils/RequestResponse.go b/utils/RequestResponse.go index f35b834..171aa02 100644 --- a/utils/RequestResponse.go +++ b/utils/RequestResponse.go @@ -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"` }