package orm import ( "net/http" "github.com/jinzhu/gorm" "gogs.carducci-dante.gov.it/karmen/core/renderer" ) type Activity struct { gorm.Model Name string Class Class Teacher *Teacher Subject Subject ClassID uint `schema:"class_id"` TeacherID uint `schema:"teacher_id"` SubjectID uint `schema:"subject_id"` Hours int prevTeacherID uint } func (a *Activity) GetID() uint { return a.ID } func GetActivity(args map[string]string) (interface{}, error) { var activity Activity if err := DB().First(&activity, args["id"]).Error; err != nil { return nil, err } return &activity, nil } func GetActivityAll(args map[string]string) (interface{}, error) { var activity Activity id := args["id"] if err := DB().Preload("Teacher").Preload("Subject").Preload("Class").First(&activity, id).Error; err != nil { return nil, err } return &activity, nil } func GetActivitiesAll(args map[string]string) (interface{}, error) { var activities []*Activity if err := DB().Preload("Teacher").Preload("Subject").Preload("Class").Order("name").Find(&activities).Error; err != nil { return nil, err } return activities, nil } func GetActivities(args map[string]string) (interface{}, error) { var activities []*Activity if err := DB().Order("surname,name").Find(&activities).Error; err != nil { return nil, err } return activities, nil } func SaveActivity(activity interface{}) (interface{}, error) { if err := DB().Save(activity).Error; err != nil { return nil, err } return activity, nil } func UpdateActivity(args map[string]string, r *http.Request) (IDer, error) { activity, err := GetActivity(args) if err != nil { return nil, err } err = renderer.Decode(activity, r) if err != nil { return nil, err } _, err = SaveActivity(activity) if err != nil { return nil, err } activity, err = GetActivity(args) if err != nil { return nil, err } return activity.(*Activity), nil } func AddActivity(args map[string]string, r *http.Request) (IDer, error) { activity := new(Activity) err := renderer.Decode(activity, r) if err != nil { return nil, err } activity, err = CreateActivity(activity) if err != nil { return nil, err } return activity, nil } func CreateActivity(activity *Activity) (*Activity, error) { if err := DB().Create(activity).Error; err != nil { return nil, err } return activity, nil } func DeleteActivity(activity *Activity) error { if err := DB().Delete(activity).Error; err != nil { return err } return nil }