job.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package orm
  2. import (
  3. "log"
  4. "net/http"
  5. "time"
  6. "github.com/jinzhu/gorm"
  7. "gogs.carducci-dante.gov.it/karmen/core/renderer"
  8. )
  9. type File struct {
  10. gorm.Model
  11. Path string
  12. JobID uint
  13. }
  14. type Job struct {
  15. gorm.Model
  16. Name string
  17. Document *Document
  18. DocumentID uint
  19. Files []*File
  20. Start time.Time
  21. End time.Time
  22. }
  23. func (s *Job) GetID() uint { return s.ID }
  24. func GetFile(args map[string]string) (interface{}, error) {
  25. var job Job
  26. if err := DB().Preload("Document").Preload("Files").First(&job, args["id"]).Error; err != nil {
  27. return nil, err
  28. }
  29. log.Println("Downloading file...")
  30. return &job, nil
  31. }
  32. func GetJob(args map[string]string) (interface{}, error) {
  33. var job Job
  34. if err := DB().Preload("Document").Preload("Files").First(&job, args["id"]).Error; err != nil {
  35. return nil, err
  36. }
  37. return &job, nil
  38. }
  39. func UpdateJob(args map[string]string, r *http.Request) (IDer, error) {
  40. job, err := GetJob(args)
  41. if err != nil {
  42. return nil, err
  43. }
  44. err = renderer.Decode(job, r)
  45. if err != nil {
  46. return nil, err
  47. }
  48. _, err = SaveJob(job)
  49. if err != nil {
  50. return nil, err
  51. }
  52. job, err = GetJob(args)
  53. if err != nil {
  54. return nil, err
  55. }
  56. return job.(*Job), nil
  57. }
  58. func SaveJob(job interface{}) (interface{}, error) {
  59. if err := DB().Save(job).Error; err != nil {
  60. return nil, err
  61. }
  62. return job, nil
  63. }