Add client and user seeders with updated structure and data
This commit is contained in:
parent
7e80599a45
commit
1a965282cd
|
|
@ -0,0 +1,47 @@
|
|||
[
|
||||
{
|
||||
"ID": "550e8400-e29b-41d4-a716-446655440001",
|
||||
"Name": "PT Teknologi Maju Indonesia",
|
||||
"PIC": "Budi Santoso",
|
||||
"Phone": "+62811234567",
|
||||
"Email": "admin@teknologimaju.co.id",
|
||||
"Address": "Jl. Sudirman No. 123, Jakarta Pusat, DKI Jakarta 10220",
|
||||
"LogoUrl": "https://example.com/logos/teknologi-maju.png"
|
||||
},
|
||||
{
|
||||
"ID": "550e8400-e29b-41d4-a716-446655440002",
|
||||
"Name": "CV Sumber Rejeki Abadi",
|
||||
"PIC": "Siti Nurhaliza",
|
||||
"Phone": "+62812345678",
|
||||
"Email": "contact@sumberrejeki.com",
|
||||
"Address": "Jl. Raya Bogor KM 25, Depok, Jawa Barat 16424",
|
||||
"LogoUrl": "https://example.com/logos/sumber-rejeki.png"
|
||||
},
|
||||
{
|
||||
"ID": "550e8400-e29b-41d4-a716-446655440003",
|
||||
"Name": "PT Logistik Nusantara Prima",
|
||||
"PIC": "Ahmad Fauzi",
|
||||
"Phone": "+62813456789",
|
||||
"Email": "info@logistiknusantara.co.id",
|
||||
"Address": "Jl. Gatot Subroto No. 456, Bandung, Jawa Barat 40263",
|
||||
"LogoUrl": "https://example.com/logos/logistik-nusantara.png"
|
||||
},
|
||||
{
|
||||
"ID": "550e8400-e29b-41d4-a716-446655440004",
|
||||
"Name": "UD Mandiri Sejahtera",
|
||||
"PIC": "Dewi Kartika",
|
||||
"Phone": "+62814567890",
|
||||
"Email": "admin@mandirisejahtera.net",
|
||||
"Address": "Jl. A. Yani No. 789, Surabaya, Jawa Timur 60235",
|
||||
"LogoUrl": "https://example.com/logos/mandiri-sejahtera.png"
|
||||
},
|
||||
{
|
||||
"ID": "550e8400-e29b-41d4-a716-446655440005",
|
||||
"Name": "PT Global Supply Chain",
|
||||
"PIC": "Rizki Pratama",
|
||||
"Phone": "+62815678901",
|
||||
"Email": "contact@globalsupplychain.id",
|
||||
"Address": "Jl. HR Rasuna Said Blok X-5 Kav. 1-2, Jakarta Selatan, DKI Jakarta 12950",
|
||||
"LogoUrl": "https://example.com/logos/global-supply.png"
|
||||
}
|
||||
]
|
||||
|
|
@ -1,20 +1,35 @@
|
|||
[
|
||||
{
|
||||
"name": "admin",
|
||||
"telp_number": "08123456789",
|
||||
"email": "admin1234@gmail.com",
|
||||
"password": "admin1234",
|
||||
"role": "admin",
|
||||
"is_verified": true,
|
||||
"tenant_name": "Tenant A"
|
||||
"name": "Super Admin",
|
||||
"username": "superadmin",
|
||||
"password": "SuperAdminSecure123",
|
||||
"gender": "male",
|
||||
"address": "Jl. Merdeka No. 10, Jakarta",
|
||||
"phone": "081234567890",
|
||||
"email": "superadmin@example.com",
|
||||
"photo_url": "https://example.com/photos/superadmin.jpg",
|
||||
"client_name": "PT Teknologi Maju Indonesia"
|
||||
},
|
||||
{
|
||||
"name": "user",
|
||||
"telp_number": "08123456789",
|
||||
"email": "user1234@gmail.com",
|
||||
"password": "user1234",
|
||||
"role": "user",
|
||||
"is_verified": true,
|
||||
"tenant_name": "Tenant B"
|
||||
"name": "Admin",
|
||||
"username": "admin",
|
||||
"password": "AdminSecure123",
|
||||
"gender": "male",
|
||||
"address": "Jl. Merdeka No. 10, Jakarta",
|
||||
"phone": "081234567890",
|
||||
"email": "admin@example.com",
|
||||
"photo_url": "https://example.com/photos/admin.jpg",
|
||||
"client_name": "PT Teknologi Maju Indonesia"
|
||||
},
|
||||
{
|
||||
"name": "User",
|
||||
"username": "user",
|
||||
"password": "UserSecure123",
|
||||
"gender": "male",
|
||||
"address": "Jl. Merdeka No. 10, Jakarta",
|
||||
"phone": "081234567890",
|
||||
"email": "user@example.com",
|
||||
"photo_url": "https://example.com/photos/user.jpg",
|
||||
"client_name": "PT Teknologi Maju Indonesia"
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -0,0 +1,73 @@
|
|||
package seeds
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
|
||||
"github.com/Caknoooo/go-gin-clean-starter/database/entities"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type ClientSeed struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
PIC string `json:"pic"`
|
||||
Phone string `json:"phone"`
|
||||
Email string `json:"email"`
|
||||
Address string `json:"address"`
|
||||
LogoUrl string `json:"logo_url"`
|
||||
}
|
||||
|
||||
func ListClientSeeder(db *gorm.DB) error {
|
||||
jsonFile, err := os.Open("./database/seeders/json/clients.json")
|
||||
if err != nil {
|
||||
fmt.Println("Error opening file:", err)
|
||||
return err
|
||||
}
|
||||
|
||||
jsonData, err := io.ReadAll(jsonFile)
|
||||
if err != nil {
|
||||
fmt.Println("Error reading file:", err)
|
||||
return err
|
||||
}
|
||||
|
||||
var listClient []ClientSeed
|
||||
if err := json.Unmarshal(jsonData, &listClient); err != nil {
|
||||
fmt.Println("Error unmarshalling JSON:", err)
|
||||
return err
|
||||
}
|
||||
|
||||
hasTable := db.Migrator().HasTable(&entities.M_Client{})
|
||||
if !hasTable {
|
||||
fmt.Println("Creating table: M_Client")
|
||||
if err := db.Migrator().CreateTable(&entities.M_Client{}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
for _, data := range listClient {
|
||||
var client entities.M_Client
|
||||
err := db.Where(&entities.M_Client{Name: data.Name}).First(&client).Error
|
||||
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
fmt.Println("Error querying client:", err)
|
||||
return err
|
||||
}
|
||||
if err := db.FirstOrCreate(&client, entities.M_Client{
|
||||
ID: client.ID,
|
||||
Name: data.Name,
|
||||
PIC: data.PIC,
|
||||
Phone: data.Phone,
|
||||
Email: data.Email,
|
||||
Address: data.Address,
|
||||
LogoUrl: data.LogoUrl,
|
||||
}).Error; err != nil {
|
||||
fmt.Println("Error seeding client:", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
@ -3,21 +3,25 @@ package seeds
|
|||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
|
||||
"github.com/Caknoooo/go-gin-clean-starter/database/entities"
|
||||
"github.com/Caknoooo/go-gin-clean-starter/pkg/utils"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type UserSeed struct {
|
||||
Name string `json:"name"`
|
||||
TelpNumber string `json:"telp_number"`
|
||||
Email string `json:"email"`
|
||||
Username string `json:"username"`
|
||||
Password string `json:"password"`
|
||||
Role string `json:"role"`
|
||||
IsVerified bool `json:"is_verified"`
|
||||
TenantName string `json:"tenant_name"`
|
||||
Gender string `json:"gender"`
|
||||
Address string `json:"address"`
|
||||
Phone string `json:"phone"`
|
||||
Email string `json:"email"`
|
||||
PhotoUrl string `json:"photo_url"`
|
||||
ClientName string `json:"client_name"`
|
||||
}
|
||||
|
||||
func ListUserSeeder(db *gorm.DB) error {
|
||||
|
|
@ -36,35 +40,45 @@ func ListUserSeeder(db *gorm.DB) error {
|
|||
return err
|
||||
}
|
||||
|
||||
hasTable := db.Migrator().HasTable(&entities.User{})
|
||||
hasTable := db.Migrator().HasTable(&entities.M_User{})
|
||||
if !hasTable {
|
||||
if err := db.Migrator().CreateTable(&entities.User{}); err != nil {
|
||||
if err := db.Migrator().CreateTable(&entities.M_User{}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
for _, data := range listUser {
|
||||
var tenant entities.Tenant
|
||||
if err := db.Where("name = ?", data.TenantName).First(&tenant).Error; err != nil {
|
||||
return err // tenant tidak ditemukan
|
||||
var client entities.M_Client
|
||||
fmt.Println("Finding client: ", data.ClientName)
|
||||
if err := db.Where("name = ?", data.ClientName).First(&client).Error; err != nil {
|
||||
fmt.Println("Client not found:", err)
|
||||
return err // client tidak ditemukan
|
||||
}
|
||||
|
||||
var user entities.User
|
||||
err := db.Where(&entities.User{Email: data.Email}).First(&user).Error
|
||||
var user entities.M_User
|
||||
err := db.Where(&entities.M_User{Email: data.Email}).First(&user).Error
|
||||
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
fmt.Println("Error querying user:", err)
|
||||
return err
|
||||
}
|
||||
|
||||
isData := db.Find(&user, "email = ?", data.Email).RowsAffected
|
||||
if isData == 0 {
|
||||
newUser := entities.User{
|
||||
fmt.Println("Seeding user:", data.Email)
|
||||
passwordEncrypted, err := utils.HashPassword(data.Password)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
newUser := entities.M_User{
|
||||
Name: data.Name,
|
||||
TelpNumber: data.TelpNumber,
|
||||
Username: data.Username,
|
||||
Password: passwordEncrypted,
|
||||
Gender: data.Gender,
|
||||
Address: data.Address,
|
||||
Phone: data.Phone,
|
||||
Email: data.Email,
|
||||
Password: data.Password,
|
||||
Role: data.Role,
|
||||
IsVerified: data.IsVerified,
|
||||
TenantID: tenant.ID,
|
||||
PhotoUrl: data.PhotoUrl,
|
||||
ClientID: client.ID,
|
||||
}
|
||||
if err := db.Create(&newUser).Error; err != nil {
|
||||
return err
|
||||
|
|
|
|||
Loading…
Reference in New Issue