From 82e7fd1d0142b6696485518d3951898926cd9ffc Mon Sep 17 00:00:00 2001 From: koh Date: Sat, 12 Apr 2025 15:54:30 +0700 Subject: [PATCH] Add MySQL initialization and user model size constraint --- internal/initialize/mysql.go | 16 ++++++++++++++++ internal/initialize/run.go | 2 ++ internal/models/user.go | 2 +- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/internal/initialize/mysql.go b/internal/initialize/mysql.go index 2eef30a..883e57f 100644 --- a/internal/initialize/mysql.go +++ b/internal/initialize/mysql.go @@ -5,6 +5,7 @@ import ( "time" "github.com/dungnt11/todoms_golang/global" + "github.com/dungnt11/todoms_golang/internal/models" "go.uber.org/zap" "gorm.io/driver/mysql" "gorm.io/gorm" @@ -45,3 +46,18 @@ func setPool(db *gorm.DB) { sqlDb.SetMaxOpenConns(m.MaxOpenConns) sqlDb.SetConnMaxLifetime(time.Duration(m.ConnMaxLifetime) * time.Second) } + +func defaultInitMysql() { + isInitUser := global.Mdb.Migrator().HasTable(&models.User{}) + isInitProduct := global.Mdb.Migrator().HasTable(&models.Product{}) + + if !isInitUser { + global.Mdb.AutoMigrate(&models.User{}) + global.Logger.Info("Initialized User table") + } + + if !isInitProduct { + global.Mdb.AutoMigrate(&models.Product{}) + global.Logger.Info("Initialized Product table") + } +} diff --git a/internal/initialize/run.go b/internal/initialize/run.go index 5a3478e..3cf0c55 100644 --- a/internal/initialize/run.go +++ b/internal/initialize/run.go @@ -38,6 +38,8 @@ func Run() { return } + defaultInitMysql() + // Khởi tạo router r := provideRouter() diff --git a/internal/models/user.go b/internal/models/user.go index 3837b88..d99e2c7 100644 --- a/internal/models/user.go +++ b/internal/models/user.go @@ -9,7 +9,7 @@ import ( // User đại diện cho người dùng trong hệ thống type User struct { ID uint `json:"id" gorm:"primaryKey"` - Username string `json:"username" gorm:"uniqueIndex;not null"` + Username string `json:"username" gorm:"uniqueIndex;not null;size:255"` Password string `json:"-" gorm:"not null"` // Không trả về password trong JSON Name string `json:"name"` CreatedAt time.Time `json:"created_at"`