From 909a0a7d88c33734ae95a1070229b290e80560d9 Mon Sep 17 00:00:00 2001 From: Duc Nguyen Date: Sun, 29 Dec 2024 13:41:25 +0700 Subject: [PATCH] Change primary key to uint64 --- internal/user/handler/handler.go | 4 ++-- internal/user/model/user.go | 2 +- internal/user/repository/repository.go | 4 ++-- internal/user/service/service.go | 8 ++++---- internal/user/user.go | 3 ++- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/internal/user/handler/handler.go b/internal/user/handler/handler.go index 8652326..68a8565 100644 --- a/internal/user/handler/handler.go +++ b/internal/user/handler/handler.go @@ -36,7 +36,7 @@ func (h *UserHandler) All(w http.ResponseWriter, r *http.Request) { core.JSON(w, http.StatusOK, users) } func (h *UserHandler) Load(w http.ResponseWriter, r *http.Request) { - id, err := core.GetRequiredString(w, r) + id, err := core.GetRequiredUint64(w, r) if err == nil { user, err := h.service.Load(r.Context(), id) if err != nil { @@ -78,7 +78,7 @@ func (h *UserHandler) Patch(w http.ResponseWriter, r *http.Request) { } } func (h *UserHandler) Delete(w http.ResponseWriter, r *http.Request) { - id, err := core.GetRequiredString(w, r) + id, err := core.GetRequiredUint64(w, r) if err == nil { res, err := h.service.Delete(r.Context(), id) core.AfterDeleted(w, r, res, err, h.Error) diff --git a/internal/user/model/user.go b/internal/user/model/user.go index 902e8d8..84b1443 100644 --- a/internal/user/model/user.go +++ b/internal/user/model/user.go @@ -3,7 +3,7 @@ package model import "time" type User struct { - Id string `yaml:"id" mapstructure:"id" json:"id" gorm:"column:id;primary_key" bson:"_id" dynamodbav:"id" firestore:"-" avro:"id" validate:"required,max=40" operator:"="` + Id uint64 `yaml:"id" mapstructure:"id" json:"id" gorm:"column:id;primary_key" bson:"_id" dynamodbav:"id" firestore:"-" avro:"id" validate:"required,max=40" operator:"="` Username string `yaml:"username" mapstructure:"username" json:"username" gorm:"column:username" bson:"username" dynamodbav:"username" firestore:"username" avro:"username" validate:"required,username,max=100"` Email string `yaml:"email" mapstructure:"email" json:"email" gorm:"column:email" bson:"email" dynamodbav:"email" firestore:"email" avro:"email" validate:"email,max=100"` Phone string `yaml:"phone" mapstructure:"phone" json:"phone" gorm:"column:phone" bson:"phone" dynamodbav:"phone" firestore:"phone" avro:"phone" validate:"required,phone,max=18" operator:"like"` diff --git a/internal/user/repository/repository.go b/internal/user/repository/repository.go index 71056dd..52520be 100644 --- a/internal/user/repository/repository.go +++ b/internal/user/repository/repository.go @@ -8,10 +8,10 @@ import ( type UserRepository interface { All(ctx context.Context) ([]model.User, error) - Load(ctx context.Context, id string) (*model.User, error) + Load(ctx context.Context, id uint64) (*model.User, error) Create(ctx context.Context, user *model.User) (int64, error) Update(ctx context.Context, user *model.User) (int64, error) Patch(ctx context.Context, user map[string]interface{}) (int64, error) - Delete(ctx context.Context, id string) (int64, error) + Delete(ctx context.Context, id uint64) (int64, error) Search(ctx context.Context, filter *model.UserFilter, limit int64, offset int64) ([]model.User, int64, error) } diff --git a/internal/user/service/service.go b/internal/user/service/service.go index 808bc89..b2cc074 100644 --- a/internal/user/service/service.go +++ b/internal/user/service/service.go @@ -12,11 +12,11 @@ import ( type UserService interface { All(ctx context.Context) ([]model.User, error) - Load(ctx context.Context, id string) (*model.User, error) + Load(ctx context.Context, id uint64) (*model.User, error) Create(ctx context.Context, user *model.User) (int64, error) Update(ctx context.Context, user *model.User) (int64, error) Patch(ctx context.Context, user map[string]interface{}) (int64, error) - Delete(ctx context.Context, id string) (int64, error) + Delete(ctx context.Context, id uint64) (int64, error) Search(ctx context.Context, filter *model.UserFilter, limit int64, offset int64) ([]model.User, int64, error) } @@ -32,7 +32,7 @@ type UserUseCase struct { func (s *UserUseCase) All(ctx context.Context) ([]model.User, error) { return s.repository.All(ctx) } -func (s *UserUseCase) Load(ctx context.Context, id string) (*model.User, error) { +func (s *UserUseCase) Load(ctx context.Context, id uint64) (*model.User, error) { return s.repository.Load(ctx, id) } func (s *UserUseCase) Create(ctx context.Context, user *model.User) (int64, error) { @@ -50,7 +50,7 @@ func (s *UserUseCase) Patch(ctx context.Context, user map[string]interface{}) (i return s.repository.Patch(ctx, user) }) } -func (s *UserUseCase) Delete(ctx context.Context, id string) (int64, error) { +func (s *UserUseCase) Delete(ctx context.Context, id uint64) (int64, error) { return tx.Execute(ctx, s.db, func(ctx context.Context) (int64, error) { return s.repository.Delete(ctx, id) }) diff --git a/internal/user/user.go b/internal/user/user.go index 8466b88..94a6b3a 100644 --- a/internal/user/user.go +++ b/internal/user/user.go @@ -31,11 +31,12 @@ func NewUserHandler(db *sql.DB, logError core.Log, action *core.ActionConfig) (U } buildQuery := query.UseQuery[model.User, *model.UserFilter](db, "users") - userRepository, err := repository.NewSearchRepository[model.User, string, *model.UserFilter](db, "users", buildQuery) + userRepository, err := repository.NewSearchRepository[model.User, uint64, *model.UserFilter](db, "users", buildQuery) if err != nil { return nil, err } userService := service.NewUserService(db, userRepository) userHandler := handler.NewUserHandler(userService, logError, validator.Validate, action) + // userHandler := h.Newhandler[model.User, uint64](userService, logError, validator.Validate) return userHandler, nil }