job.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package orm
  2. import (
  3. "net/http"
  4. "strconv"
  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. return map[string]string{
  30. "filename": args["filename"],
  31. "document_id": strconv.Itoa(int(job.DocumentID)),
  32. "id": strconv.Itoa(int(job.ID)),
  33. }, nil
  34. }
  35. func GetJob(args map[string]string) (interface{}, error) {
  36. var job Job
  37. if err := DB().Preload("Document").Preload("Files").First(&job, args["id"]).Error; err != nil {
  38. return nil, err
  39. }
  40. return &job, nil
  41. }
  42. func UpdateJob(args map[string]string, r *http.Request) (IDer, error) {
  43. job, err := GetJob(args)
  44. if err != nil {
  45. return nil, err
  46. }
  47. err = renderer.Decode(job, r)
  48. if err != nil {
  49. return nil, err
  50. }
  51. _, err = SaveJob(job)
  52. if err != nil {
  53. return nil, err
  54. }
  55. job, err = GetJob(args)
  56. if err != nil {
  57. return nil, err
  58. }
  59. return job.(*Job), nil
  60. }
  61. func SaveJob(job interface{}) (interface{}, error) {
  62. if err := DB().Save(job).Error; err != nil {
  63. return nil, err
  64. }
  65. return job, nil
  66. }