chores: refactor struct and structure project

This commit is contained in:
ericprd
2025-03-05 21:21:44 +08:00
parent 13a8481f22
commit 567e0e32ca
103 changed files with 1125 additions and 731 deletions
@@ -3,24 +3,27 @@ package authhttp
import (
"net/http"
authdomain "legalgo-BE-go/internal/domain/auth"
responsedomain "legalgo-BE-go/internal/domain/reponse"
staffdomain "legalgo-BE-go/internal/domain/staff"
authsvc "legalgo-BE-go/internal/services/auth"
"legalgo-BE-go/internal/utilities/response"
"legalgo-BE-go/internal/utilities/utils"
"github.com/go-chi/chi/v5"
"github.com/go-playground/validator/v10"
"github.com/redis/go-redis/v9"
)
func LoginStaff(
router chi.Router,
authSvc authsvc.AuthIntf,
authSvc authsvc.Auth,
validate *validator.Validate,
rdb *redis.Client,
) {
router.Post("/staff/login", func(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
var spec authdomain.LoginReq
var spec staffdomain.StaffLogin
if err := utils.UnmarshalBody(r, &spec); err != nil {
response.ResponseWithErrorCode(
@@ -59,50 +62,7 @@ func LoginStaff(
return
}
responsePayload := &authdomain.AuthResponse{
Token: token,
}
response.RespondJsonSuccess(ctx, w, responsePayload)
})
}
func LoginUser(
router chi.Router,
authSvc authsvc.AuthIntf,
validate *validator.Validate,
) {
router.Post("/user/login", func(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
var spec authdomain.LoginReq
if err := utils.UnmarshalBody(r, &spec); err != nil {
response.ResponseWithErrorCode(
ctx,
w,
err,
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
"failed to unmarshal request",
)
return
}
if err := validate.Struct(spec); err != nil {
response.ResponseWithErrorCode(
ctx,
w,
err,
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
err.(validator.ValidationErrors).Error(),
)
return
}
token, err := authSvc.LoginAsUser(spec)
if err != nil {
if err := utils.StoreTokenRedis(ctx, rdb, token, spec.Email); err != nil {
response.ResponseWithErrorCode(
ctx,
w,
@@ -114,7 +74,7 @@ func LoginUser(
return
}
responsePayload := &authdomain.AuthResponse{
responsePayload := &responsedomain.Auth{
Token: token,
}
+82
View File
@@ -0,0 +1,82 @@
package authhttp
import (
responsedomain "legalgo-BE-go/internal/domain/reponse"
userdomain "legalgo-BE-go/internal/domain/user"
authsvc "legalgo-BE-go/internal/services/auth"
"legalgo-BE-go/internal/utilities/response"
"legalgo-BE-go/internal/utilities/utils"
"net/http"
"github.com/go-chi/chi/v5"
"github.com/go-playground/validator/v10"
"github.com/redis/go-redis/v9"
)
func LoginUser(
router chi.Router,
authSvc authsvc.Auth,
validate *validator.Validate,
rdb *redis.Client,
) {
router.Post("/user/login", func(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
var spec userdomain.UserLogin
if err := utils.UnmarshalBody(r, &spec); err != nil {
response.ResponseWithErrorCode(
ctx,
w,
err,
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
"failed to unmarshal request",
)
return
}
if err := validate.Struct(spec); err != nil {
response.ResponseWithErrorCode(
ctx,
w,
err,
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
err.(validator.ValidationErrors).Error(),
)
return
}
token, err := authSvc.LoginAsUser(spec)
if err != nil {
response.ResponseWithErrorCode(
ctx,
w,
err,
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
err.Error(),
)
return
}
if err := utils.StoreTokenRedis(ctx, rdb, token, spec.Email); err != nil {
response.ResponseWithErrorCode(
ctx,
w,
err,
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
err.Error(),
)
return
}
responsePayload := &responsedomain.Auth{
Token: token,
}
response.RespondJsonSuccess(ctx, w, responsePayload)
})
}
+2 -2
View File
@@ -11,7 +11,7 @@ import (
func GetStaffProfile(
router chi.Router,
authSvc authsvc.AuthIntf,
authSvc authsvc.Auth,
) {
router.Get("/staff/profile", func(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
@@ -47,7 +47,7 @@ func GetStaffProfile(
func GetUserProfile(
router chi.Router,
authSvc authsvc.AuthIntf,
authSvc authsvc.Auth,
) {
router.Get("/user/profile", func(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
@@ -3,79 +3,27 @@ package authhttp
import (
"net/http"
authdomain "legalgo-BE-go/internal/domain/auth"
responsedomain "legalgo-BE-go/internal/domain/reponse"
staffdomain "legalgo-BE-go/internal/domain/staff"
authsvc "legalgo-BE-go/internal/services/auth"
"legalgo-BE-go/internal/utilities/response"
"legalgo-BE-go/internal/utilities/utils"
"github.com/go-chi/chi/v5"
"github.com/go-playground/validator/v10"
"github.com/redis/go-redis/v9"
)
func RegisterUser(
router chi.Router,
validate *validator.Validate,
authSvc authsvc.AuthIntf,
) {
router.Post("/user/register", func(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
var spec authdomain.RegisterUserReq
if err := utils.UnmarshalBody(r, &spec); err != nil {
response.ResponseWithErrorCode(
ctx,
w,
err,
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
"failed to unmarshal request",
)
return
}
if err := validate.Struct(spec); err != nil {
response.ResponseWithErrorCode(
ctx,
w,
err,
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
err.(validator.ValidationErrors).Error(),
)
return
}
token, err := authSvc.RegisterUser(spec)
if err != nil {
response.ResponseWithErrorCode(
ctx,
w,
err,
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
err.Error(),
)
return
}
responsePayload := &authdomain.AuthResponse{
Token: token,
}
response.RespondJsonSuccess(ctx, w, responsePayload)
})
}
func RegisterStaff(
router chi.Router,
validate *validator.Validate,
authSvc authsvc.AuthIntf,
authSvc authsvc.Auth,
rdb *redis.Client,
) {
router.Post("/staff/register", func(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
var spec authdomain.RegisterStaffReq
var spec staffdomain.StaffRegister
if err := utils.UnmarshalBody(r, &spec); err != nil {
response.ResponseWithErrorCode(
@@ -113,7 +61,20 @@ func RegisterStaff(
)
return
}
responsePayload := &authdomain.AuthResponse{
if err := utils.StoreTokenRedis(ctx, rdb, token, spec.Email); err != nil {
response.ResponseWithErrorCode(
ctx,
w,
err,
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
err.Error(),
)
return
}
responsePayload := &responsedomain.Auth{
Token: token,
}
response.RespondJsonSuccess(ctx, w, responsePayload)
+82
View File
@@ -0,0 +1,82 @@
package authhttp
import (
responsedomain "legalgo-BE-go/internal/domain/reponse"
userdomain "legalgo-BE-go/internal/domain/user"
authsvc "legalgo-BE-go/internal/services/auth"
"legalgo-BE-go/internal/utilities/response"
"legalgo-BE-go/internal/utilities/utils"
"net/http"
"github.com/go-chi/chi/v5"
"github.com/go-playground/validator/v10"
"github.com/redis/go-redis/v9"
)
func RegisterUser(
router chi.Router,
validate *validator.Validate,
authSvc authsvc.Auth,
rdb *redis.Client,
) {
router.Post("/user/register", func(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
var spec userdomain.UserRegister
if err := utils.UnmarshalBody(r, &spec); err != nil {
response.ResponseWithErrorCode(
ctx,
w,
err,
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
"failed to unmarshal request",
)
return
}
if err := validate.Struct(spec); err != nil {
response.ResponseWithErrorCode(
ctx,
w,
err,
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
err.(validator.ValidationErrors).Error(),
)
return
}
token, err := authSvc.RegisterUser(spec)
if err != nil {
response.ResponseWithErrorCode(
ctx,
w,
err,
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
err.Error(),
)
return
}
if err := utils.StoreTokenRedis(ctx, rdb, token, spec.Email); err != nil {
response.ResponseWithErrorCode(
ctx,
w,
err,
response.ErrBadRequest.Code,
response.ErrBadRequest.HttpCode,
err.Error(),
)
return
}
responsePayload := &responsedomain.Auth{
Token: token,
}
response.RespondJsonSuccess(ctx, w, responsePayload)
})
}
+4 -4
View File
@@ -2,7 +2,7 @@ package authhttp
import (
"errors"
authdomain "legalgo-BE-go/internal/domain/auth"
staffdomain "legalgo-BE-go/internal/domain/staff"
authsvc "legalgo-BE-go/internal/services/auth"
"legalgo-BE-go/internal/utilities/response"
"legalgo-BE-go/internal/utilities/utils"
@@ -13,7 +13,7 @@ import (
func UpdateStaff(
router chi.Router,
authSvc authsvc.AuthIntf,
authSvc authsvc.Auth,
) {
router.Patch("/staff/{id}/update", func(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
@@ -31,7 +31,7 @@ func UpdateStaff(
return
}
var spec authdomain.RegisterStaffReq
var spec staffdomain.StaffRegister
if err := utils.UnmarshalBody(r, &spec); err != nil {
response.ResponseWithErrorCode(
@@ -45,7 +45,7 @@ func UpdateStaff(
return
}
staff := authdomain.Staff{
staff := staffdomain.Staff{
ID: id,
Email: spec.Email,
Password: spec.Password,