package functionset import ( "log" function "example.com/database/function" "gorm.io/gorm" ) type FunctionSet struct { gorm.Model Functions []function.Function `gorm:"many2many:functionset_function_associations" json:"functions"` } func CreateDatabaseFunctionSet(db *gorm.DB, functionSet FunctionSet) error { result := db.Create(&functionSet) if result.Error != nil { return result.Error } return nil } func GetDatabaseFunctionSet(db *gorm.DB, inputFunctionSet int) FunctionSet { var outputFunctionSet FunctionSet result := db.Model(&FunctionSet{}).Where("id = ?", inputFunctionSet).Take(&outputFunctionSet) if result.Error != nil { return FunctionSet{} } db.Model(&outputFunctionSet).Association("Functions").Find(&outputFunctionSet.Functions) return outputFunctionSet } func GetDatabaseFunctionSets(db *gorm.DB, inputFunctionSets []int) []FunctionSet { var outputFunctionSets []FunctionSet db.Find(&outputFunctionSets) for _, inputFunctionSet := range inputFunctionSets { outputFunctionSets = append(outputFunctionSets, GetDatabaseFunctionSet(db, inputFunctionSet)) } return outputFunctionSets } func GetAllDatabaseFunctionSets(db *gorm.DB) []FunctionSet { var outputFunctionSets []FunctionSet result := db.Find(&outputFunctionSets) if result.Error != nil { log.Println(result.Error) } for index, outputFunctionSet := range outputFunctionSets { outputFunctionSets[index] = GetDatabaseFunctionSet(db, int(outputFunctionSet.ID)) } return outputFunctionSets } func UpdateDatabaseFunctionSet(db *gorm.DB, functionSet FunctionSet) error { result := db.Save(&functionSet) if result.Error != nil { return result.Error } return nil }