79 lines
1.6 KiB
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
|
|
}
|