package seeds import ( "encoding/json" "io" "os" "github.com/Caknoooo/go-gin-clean-starter/database/entities" "github.com/sirupsen/logrus" "gorm.io/gorm" ) type MenuClientSeed struct { MenuName string `json:"menu_name"` ClientName string `json:"client_name"` } func ListMenuClientSeeder(db *gorm.DB) error { jsonFile, err := os.Open("./database/seeders/json/menu_clients.json") if err != nil { return err } jsonData, err := io.ReadAll(jsonFile) if err != nil { return err } var listMenuClient []MenuClientSeed if err := json.Unmarshal(jsonData, &listMenuClient); err != nil { return err } hasTable := db.Migrator().HasTable(&entities.M_Menu_Client{}) if !hasTable { if err := db.Migrator().CreateTable(&entities.M_Menu_Client{}); err != nil { return err } } for _, data := range listMenuClient { var menu entities.M_Menu var client entities.M_Client if err := db.Where("name = ?", data.MenuName).First(&menu).Error; err != nil { logrus.Error("Menu not found: ", err) return err // menu tidak ditemukan } if err := db.Where("name = ?", data.ClientName).First(&client).Error; err != nil { logrus.Error("Client not found: ", err) return err // client tidak ditemukan } var menuClient entities.M_Menu_Client if err := db.FirstOrCreate(&menuClient, entities.M_Menu_Client{ MenuID: menu.ID, ClientID: client.ID, }).Error; err != nil { return err } } return nil }