go_service/gorm_models/family.go

79 lines
1.6 KiB
Go

package gorm_models
import (
"log"
"gorm.io/gorm"
)
type AttributeOption struct {
ID uint `gorm:"primaryKey"`
AttributeID uint
AdminName string
}
type Attribute struct {
ID uint `gorm:"primaryKey"`
Code string
AttributeOptions []AttributeOption
}
type AttributeFamily struct {
ID uint `gorm:"primaryKey"`
Code string
Groups []AttributeGroup
}
type AttributeGroup struct {
ID uint `gorm:"primaryKey"`
Name string
AttributeFamilyID uint
Attributes []Attribute `gorm:"many2many:attribute_group_mappings;"`
}
func GetFamilies(db *gorm.DB) []AttributeFamily {
var families []AttributeFamily
err := db.Model(&AttributeFamily{}).Preload("Groups").Order("id ASC").Find(&families).Error
if err != nil {
log.Println(err.Error())
} else {
log.Println("famililar alyndy", len(families))
}
return families
}
func GetGroups(db *gorm.DB) []AttributeGroup {
var groups []AttributeGroup
err := db.Model(&AttributeGroup{}).Preload("Family").Find(&groups).Error
if err != nil {
log.Println(err.Error())
}
return groups
}
func GetAttributes(db *gorm.DB) []Attribute {
var attributes []Attribute
err := db.Model(&Attribute{}).Find(&attributes).Error
if err != nil {
log.Println(err.Error())
}
return attributes
}
func GetAttributeOption(db *gorm.DB, attrbuteID uint, value string) AttributeOption {
var option AttributeOption
err := db.FirstOrCreate(&option, AttributeOption{AttributeID: attrbuteID, AdminName: value}).Error
if err != nil {
log.Println(err.Error())
}
return option
}