53 lines
1.0 KiB
Go
53 lines
1.0 KiB
Go
package seeds
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"io"
|
|
"os"
|
|
|
|
"github.com/Caknoooo/go-gin-clean-starter/database/entities"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func ListTenantSeeder(db *gorm.DB) error {
|
|
jsonFile, err := os.Open("./database/seeders/json/tenants.json")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
jsonData, err := io.ReadAll(jsonFile)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
var listTenant []entities.Tenant
|
|
if err := json.Unmarshal(jsonData, &listTenant); err != nil {
|
|
return err
|
|
}
|
|
|
|
hasTable := db.Migrator().HasTable(&entities.Tenant{})
|
|
if !hasTable {
|
|
if err := db.Migrator().CreateTable(&entities.Tenant{}); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
for _, data := range listTenant {
|
|
var tenant entities.Tenant
|
|
err := db.Where(&entities.Tenant{Name: data.Name}).First(&tenant).Error
|
|
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
|
|
return err
|
|
}
|
|
|
|
isData := db.Find(&tenant, "name = ?", data.Name).RowsAffected
|
|
if isData == 0 {
|
|
if err := db.Create(&data).Error; err != nil {
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|