From 36d0812482dec615f49a63844c23051345116f90 Mon Sep 17 00:00:00 2001 From: Caknoooo Date: Sat, 20 Jan 2024 20:38:23 +0700 Subject: [PATCH] refactor: change seeding to be more structre --- migrations/json/users.json | 18 ++++++++++++ migrations/seeder.go | 52 ++--------------------------------- migrations/seeds/user_seed.go | 49 +++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 50 deletions(-) create mode 100644 migrations/json/users.json create mode 100644 migrations/seeds/user_seed.go diff --git a/migrations/json/users.json b/migrations/json/users.json new file mode 100644 index 0000000..0dbec63 --- /dev/null +++ b/migrations/json/users.json @@ -0,0 +1,18 @@ +[ + { + "name": "admin", + "telp_number": "08123456789", + "email": "admin1234@gmail.com", + "password": "admin1234", + "role": "admin", + "is_verified": true + }, + { + "name": "user", + "telp_number": "08123456789", + "email": "user1234@gmail.com", + "password": "user1234", + "role": "user", + "is_verified": true + } +] \ No newline at end of file diff --git a/migrations/seeder.go b/migrations/seeder.go index f2e5bdb..ecec9fc 100644 --- a/migrations/seeder.go +++ b/migrations/seeder.go @@ -1,62 +1,14 @@ package migrations import ( - "errors" - - "github.com/Caknoooo/go-gin-clean-template/constants" - "github.com/Caknoooo/go-gin-clean-template/entity" + "github.com/Caknoooo/go-gin-clean-template/migrations/seeds" "gorm.io/gorm" ) func Seeder(db *gorm.DB) error { - if err := ListUserSeeder(db); err != nil { + if err := seeds.ListUserSeeder(db); err != nil { return err } return nil } - -func ListUserSeeder(db *gorm.DB) error { - var listUser = []entity.User{ - { - Name: "Admin", - TelpNumber: "081234567890", - Email: "admin@gmail.com", - Password: "admin123", - Role: constants.ENUM_ROLE_ADMIN, - IsVerified: true, - }, - { - Name: "User", - TelpNumber: "081234567891", - Email: "user@gmail.com", - Password: "user123", - Role: constants.ENUM_ROLE_USER, - IsVerified: true, - }, - } - - hasTable := db.Migrator().HasTable(&entity.User{}) - if !hasTable { - if err := db.Migrator().CreateTable(&entity.User{}); err != nil { - return err - } - } - - for _, data := range listUser { - var user entity.User - err := db.Where(&entity.User{Email: data.Email}).First(&user).Error - if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { - return err - } - - isData := db.Find(&user, "email = ?", data.Email).RowsAffected - if isData == 0 { - if err := db.Create(&data).Error; err != nil { - return err - } - } - } - - return nil -} diff --git a/migrations/seeds/user_seed.go b/migrations/seeds/user_seed.go new file mode 100644 index 0000000..34d4b22 --- /dev/null +++ b/migrations/seeds/user_seed.go @@ -0,0 +1,49 @@ +package seeds + +import ( + "encoding/json" + "errors" + "io" + "os" + + "github.com/Caknoooo/go-gin-clean-template/entity" + "gorm.io/gorm" +) + +func ListUserSeeder(db *gorm.DB) error { + jsonFile, err := os.Open("./migrations/json/users.json") + if err != nil { + return err + } + + jsonData, _ := io.ReadAll(jsonFile) + + var listUser []entity.User + if err := json.Unmarshal(jsonData, &listUser); err != nil { + return err + } + + hasTable := db.Migrator().HasTable(&entity.User{}) + if !hasTable { + if err := db.Migrator().CreateTable(&entity.User{}); err != nil { + return err + } + } + + for _, data := range listUser { + var user entity.User + err := db.Where(&entity.User{Email: data.Email}).First(&user).Error + if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { + return err + } + + isData := db.Find(&user, "email = ?", data.Email).RowsAffected + if isData == 0 { + if err := db.Create(&data).Error; err != nil { + return err + } + } + } + + return nil +} \ No newline at end of file