job.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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 GetJobs(args map[string]string) (interface{}, error) {
  36. var jobs []*Job
  37. if err := DB().Preload("Document").Order("start DESC").Find(&jobs).Error; err != nil {
  38. return nil, err
  39. }
  40. return jobs, nil
  41. }
  42. func GetJob(args map[string]string) (interface{}, error) {
  43. var job Job
  44. if err := DB().Preload("Document").Preload("Files").First(&job, args["id"]).Error; err != nil {
  45. return nil, err
  46. }
  47. return &job, nil
  48. }
  49. func UpdateJob(args map[string]string, r *http.Request) (IDer, error) {
  50. job, err := GetJob(args)
  51. if err != nil {
  52. return nil, err
  53. }
  54. err = renderer.Decode(job, r)
  55. if err != nil {
  56. return nil, err
  57. }
  58. _, err = SaveJob(job)
  59. if err != nil {
  60. return nil, err
  61. }
  62. job, err = GetJob(args)
  63. if err != nil {
  64. return nil, err
  65. }
  66. return job.(*Job), nil
  67. }
  68. func SaveJob(job interface{}) (interface{}, error) {
  69. if err := DB().Save(job).Error; err != nil {
  70. return nil, err
  71. }
  72. return job, nil
  73. }
  74. func DeleteJob(args map[string]string, r *http.Request) (IDer, error) {
  75. job, err := GetJob(args)
  76. if err != nil {
  77. return nil, err
  78. }
  79. if err := DB().Unscoped().Delete(job.(*Job)).Error; err != nil {
  80. return nil, err
  81. }
  82. return job.(*Job), nil
  83. }