Skip to content
This repository has been archived by the owner on Mar 31, 2022. It is now read-only.

Commit

Permalink
Merge pull request #49 from blyndusk/fix_middlewares-api
Browse files Browse the repository at this point in the history
Fix user routes and clean middlewares
  • Loading branch information
QuentinMaillard authored Mar 10, 2022
2 parents c513150 + 1ce63da commit 2a48c5b
Show file tree
Hide file tree
Showing 11 changed files with 111 additions and 114 deletions.
6 changes: 0 additions & 6 deletions internal/controllers/activeServices.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,6 @@ import (
"github.com/blyndusk/flamingops/pkg/models"
)

func CreateActiveServices(c *gin.Context) {
var input models.ActiveServicesInput
middlewares.CreateActiveServices(c, &input)
c.JSON(http.StatusOK, input)
}

func GetActiveServices(c *gin.Context) {
var activeServices models.ActiveServices
middlewares.GetActiveServices(c, &activeServices)
Expand Down
6 changes: 0 additions & 6 deletions internal/controllers/awsServicesData.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,6 @@ import (
"github.com/blyndusk/flamingops/pkg/models"
)

func CreateAwsServicesData(c *gin.Context) {
var input models.AwsServicesDataInput
middlewares.CreateAwsServicesData(c, &input)
c.JSON(http.StatusOK, input)
}

func GetAwsServicesData(c *gin.Context) {
var awsServicesData models.AwsServicesData
middlewares.GetAwsServicesData(c, &awsServicesData)
Expand Down
6 changes: 0 additions & 6 deletions internal/controllers/requestedRegions.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,6 @@ import (
"github.com/blyndusk/flamingops/pkg/models"
)

func CreateRequestedRegions(c *gin.Context) {
var input models.RequestedRegionsInput
middlewares.CreateRequestedRegions(c, &input)
c.JSON(http.StatusOK, input)
}

func GetRequestedRegions(c *gin.Context) {
var preferences models.RequestedRegions
middlewares.GetRequestedRegions(c, &preferences)
Expand Down
6 changes: 0 additions & 6 deletions internal/controllers/swServicesData.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,6 @@ import (
"github.com/blyndusk/flamingops/pkg/models"
)

func CreateSwServicesData(c *gin.Context) {
var input models.SwServicesDataInput
middlewares.CreateSwServicesData(c, &input)
c.JSON(http.StatusOK, input)
}

func GetSwServicesData(c *gin.Context) {
var swServicesData models.SwServicesData
middlewares.GetSwServicesData(c, &swServicesData)
Expand Down
75 changes: 70 additions & 5 deletions internal/controllers/users.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"net/http"

"github.com/gin-gonic/gin"
log "github.com/sirupsen/logrus"

"github.com/blyndusk/flamingops/internal/middlewares"
"github.com/blyndusk/flamingops/pkg/helpers"
Expand All @@ -12,8 +13,49 @@ import (

func CreateUser(c *gin.Context) {
var input models.UserInput
middlewares.CreateUser(c, &input)
c.JSON(http.StatusOK, input)

if err := c.ShouldBindJSON(&input); err != nil {
httpStatus, response := helpers.GormErrorResponse(err)
c.JSON(httpStatus, response)
return
}

res, err := middlewares.CreateUser(c, &input)
if err != nil {
httpStatus, response := helpers.GormErrorResponse(err)
c.JSON(httpStatus, response)
return
}

err = middlewares.CreateActiveServices(c, &models.ActiveServicesInput{UserId: res.Id})
if err != nil {
httpStatus, response := helpers.GormErrorResponse(err)
c.JSON(httpStatus, response)
return
}

err = middlewares.CreateAwsServicesData(c, &models.AwsServicesDataInput{UserId: res.Id})
if err != nil {
httpStatus, response := helpers.GormErrorResponse(err)
c.JSON(httpStatus, response)
return
}

err = middlewares.CreateSwServicesData(c, &models.SwServicesDataInput{UserId: res.Id})
if err != nil {
httpStatus, response := helpers.GormErrorResponse(err)
c.JSON(httpStatus, response)
return
}

err = middlewares.CreateRequestedRegions(c, &models.RequestedRegionsInput{UserId: res.Id})
if err != nil {
httpStatus, response := helpers.GormErrorResponse(err)
c.JSON(httpStatus, response)
return
}

c.JSON(http.StatusOK, &res)
}

func Login(c *gin.Context) {
Expand Down Expand Up @@ -42,13 +84,36 @@ func GetUserById(c *gin.Context) {
func UpdateUser(c *gin.Context) {
var user models.User
var input models.UserInput
middlewares.UpdateUser(c, &user, &input)
c.JSON(http.StatusOK, user)

if err := c.ShouldBindJSON(&input); err != nil {
log.Error(err)
httpStatus, response := helpers.GormErrorResponse(err)
c.JSON(httpStatus, response)
return
}

if err := middlewares.UpdateUser(c, &user, &input); err != nil {
log.Error(err)
httpStatus, response := helpers.GormErrorResponse(err)
c.JSON(httpStatus, response)
return
}

c.JSON(http.StatusOK, gin.H{
"message": "User updated successfully",
})
}

func DeleteUser(c *gin.Context) {
var user models.User
middlewares.DeleteUser(c, &user)

if err := middlewares.DeleteUser(c, &user); err != nil {
log.Error(err)
httpStatus, response := helpers.GormErrorResponse(err)
c.JSON(httpStatus, response)
return
}

c.JSON(http.StatusOK, gin.H{
"message": "User deleted successfully",
})
Expand Down
14 changes: 3 additions & 11 deletions internal/middlewares/activeServices.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,13 @@ import (
log "github.com/sirupsen/logrus"
)

func CreateActiveServices(c *gin.Context, input *models.ActiveServicesInput) {
if err := c.ShouldBindJSON(&input); err != nil {
log.Error(err)
httpStatus, response := helpers.ErrorToJson(http.StatusBadRequest, err.Error())
c.JSON(httpStatus, response)
return
}

func CreateActiveServices(c *gin.Context, input *models.ActiveServicesInput) error {
activeServices := hydrateActiveServices(input)
if err := database.Db.Create(&activeServices).Error; err != nil {
log.Error(err)
httpStatus, response := helpers.GormErrorResponse(err)
c.JSON(httpStatus, response)
return
return err
}
return nil
}

func GetActiveServices(c *gin.Context, activeServices *models.ActiveServices) {
Expand Down
16 changes: 3 additions & 13 deletions internal/middlewares/awsServicesData.go
Original file line number Diff line number Diff line change
@@ -1,30 +1,20 @@
package middlewares

import (
"net/http"

"github.com/blyndusk/flamingops/internal/database"
"github.com/blyndusk/flamingops/pkg/helpers"
"github.com/blyndusk/flamingops/pkg/models"
"github.com/gin-gonic/gin"
log "github.com/sirupsen/logrus"
)

func CreateAwsServicesData(c *gin.Context, input *models.AwsServicesDataInput) {
if err := c.ShouldBindJSON(&input); err != nil {
log.Error(err)
httpStatus, response := helpers.ErrorToJson(http.StatusBadRequest, err.Error())
c.JSON(httpStatus, response)
return
}

func CreateAwsServicesData(c *gin.Context, input *models.AwsServicesDataInput) error {
awsServicesData := hydrateAwsServicesData(input)
if err := database.Db.Create(&awsServicesData).Error; err != nil {
log.Error(err)
httpStatus, response := helpers.GormErrorResponse(err)
c.JSON(httpStatus, response)
return
return err
}
return nil
}

func GetAwsServicesData(c *gin.Context, awsServicesData *models.AwsServicesData) {
Expand Down
14 changes: 3 additions & 11 deletions internal/middlewares/requestedRegions.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,13 @@ import (
log "github.com/sirupsen/logrus"
)

func CreateRequestedRegions(c *gin.Context, input *models.RequestedRegionsInput) {
if err := c.ShouldBindJSON(&input); err != nil {
log.Error(err)
httpStatus, response := helpers.ErrorToJson(http.StatusBadRequest, err.Error())
c.JSON(httpStatus, response)
return
}

func CreateRequestedRegions(c *gin.Context, input *models.RequestedRegionsInput) (error) {
requestedRegions := hydrateRequestedRegions(input)
if err := database.Db.Create(&requestedRegions).Error; err != nil {
log.Error(err)
httpStatus, response := helpers.GormErrorResponse(err)
c.JSON(httpStatus, response)
return
return err
}
return nil
}

func GetRequestedRegions(c *gin.Context, requestedRegions *models.RequestedRegions) {
Expand Down
15 changes: 3 additions & 12 deletions internal/middlewares/swServicesData.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package middlewares

import (
"net/http"

"github.com/blyndusk/flamingops/internal/database"
"github.com/blyndusk/flamingops/pkg/helpers"
Expand All @@ -10,21 +9,13 @@ import (
log "github.com/sirupsen/logrus"
)

func CreateSwServicesData(c *gin.Context, input *models.SwServicesDataInput) {
if err := c.ShouldBindJSON(&input); err != nil {
log.Error(err)
httpStatus, response := helpers.ErrorToJson(http.StatusBadRequest, err.Error())
c.JSON(httpStatus, response)
return
}

func CreateSwServicesData(c *gin.Context, input *models.SwServicesDataInput) (error) {
swServicesData := hydrateSwServicesData(input)
if err := database.Db.Create(&swServicesData).Error; err != nil {
log.Error(err)
httpStatus, response := helpers.GormErrorResponse(err)
c.JSON(httpStatus, response)
return
return err
}
return nil
}

func GetSwServicesData(c *gin.Context, swServicesData *models.SwServicesData) {
Expand Down
63 changes: 29 additions & 34 deletions internal/middlewares/users.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package middlewares

import (
"errors"
"net/http"
"strconv"

"github.com/blyndusk/flamingops/internal/database"
Expand All @@ -13,26 +12,22 @@ import (
log "github.com/sirupsen/logrus"
)

func CreateUser(c *gin.Context, input *models.UserInput) {
if err := c.ShouldBindJSON(&input); err != nil {
log.Error(err)
httpStatus, response := helpers.ErrorToJson(http.StatusBadRequest, err.Error())
c.JSON(httpStatus, response)
return
func CreateUser(c *gin.Context, input *models.UserInput) (*models.User, error) {
// Check if user already exists
var mailCheck models.User
database.Db.Where("Mail = ?", &input.Mail).First(&mailCheck)
if mailCheck.Id != 0 {
log.Error("e-mail already used")
return nil, errors.New("e-mail already used")
}

user := hydrateUser(input)
if err := database.Db.Create(&user).Error; err != nil {
log.Error(err)
httpStatus, response := helpers.GormErrorResponse(err)
c.JSON(httpStatus, response)
return
return nil, err
}

CreateActiveServices(c, &models.ActiveServicesInput{UserId: user.Id}) //todo complete
CreateSwServicesData(c, &models.SwServicesDataInput{UserId: user.Id})
CreateAwsServicesData(c, &models.AwsServicesDataInput{UserId: user.Id})
CreateRequestedRegions(c, &models.RequestedRegionsInput{UserId: user.Id})
return &user, nil
}

func Login(c *gin.Context, input *models.Login) (string, error) {
Expand All @@ -43,8 +38,6 @@ func Login(c *gin.Context, input *models.Login) (string, error) {
}

var user models.User
// log.Error(c)

if err := database.Db.Where("Mail = ?", &input.Mail).First(&user).Error; err != nil {
log.Error(err)
return "", err
Expand Down Expand Up @@ -77,33 +70,28 @@ func GetUserById(c *gin.Context, user *models.User) {
}
}

func UpdateUser(c *gin.Context, user *models.User, input *models.UserInput) {
func UpdateUser(c *gin.Context, user *models.User, input *models.UserInput) error {
GetUserById(c, user)
if err := c.ShouldBindJSON(&input); err != nil {
log.Error(err)
httpStatus, response := helpers.ErrorToJson(http.StatusBadRequest, err.Error())
c.JSON(httpStatus, response)
return
}

updatedUser := hydrateUser(input)
database.Db.Model(&user).Updates(updatedUser)
}

func DeleteUser(c *gin.Context, user *models.User) {
if err := database.Db.First(&user, c.Params.ByName("id")).Delete(&user).Error; err != nil {
if err := database.Db.Model(&user).Updates(updatedUser).Error; err != nil{
log.Error(err)
httpStatus, response := helpers.GormErrorResponse(err)
c.JSON(httpStatus, response)
return
return err
}

return nil
}

func DeleteUser(c *gin.Context, user *models.User) error {
i64, err := strconv.ParseUint(c.Params.ByName("id"), 10, 64)
if err != nil {
log.Error(err)
httpStatus, response := helpers.ErrorToJson(http.StatusBadRequest, err.Error())
c.JSON(httpStatus, response)
return
return err
}

if err := database.Db.First(&user, c.Params.ByName("id")).First(&user).Error; err != nil {
log.Error(err)
return err
}

i := uint(i64)
Expand All @@ -112,6 +100,13 @@ func DeleteUser(c *gin.Context, user *models.User) {
DeleteSwServicesData(c, &models.SwServicesData{UserId: i})
DeleteAwsServicesData(c, &models.AwsServicesData{UserId: i})
DeleteRequestedRegions(c, &models.RequestedRegions{UserId: i})

if err := database.Db.First(&user, c.Params.ByName("id")).Delete(&user).Error; err != nil {
log.Error(err)
return err
}

return nil
}

func hydrateUser(input *models.UserInput) models.User {
Expand Down
Loading

0 comments on commit 2a48c5b

Please sign in to comment.