You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

handler.go 1.1 kB

3 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package period
  2. import (
  3. "code.gitea.io/gitea/models"
  4. "errors"
  5. "time"
  6. )
  7. var PeriodHandlerMap = map[string]PeriodHandler{
  8. models.PeriodNotCycle: new(NoCycleHandler),
  9. models.PeriodDaily: new(DailyHandler),
  10. }
  11. type PeriodHandler interface {
  12. GetCurrentPeriod() *models.PeriodResult
  13. }
  14. type NoCycleHandler struct {
  15. }
  16. func (l *NoCycleHandler) GetCurrentPeriod() *models.PeriodResult {
  17. return nil
  18. }
  19. type DailyHandler struct {
  20. }
  21. func (l *DailyHandler) GetCurrentPeriod() *models.PeriodResult {
  22. t := time.Now()
  23. startTime := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location())
  24. endTime := startTime.Add(24 * time.Hour)
  25. leftTime := endTime.Sub(t)
  26. return &models.PeriodResult{
  27. StartTime: startTime,
  28. EndTime: endTime,
  29. LeftTime: leftTime,
  30. }
  31. }
  32. func getPeriodHandler(refreshRateype string) PeriodHandler {
  33. return PeriodHandlerMap[refreshRateype]
  34. }
  35. func GetPeriod(refreshRate string) (*models.PeriodResult, error) {
  36. handler := getPeriodHandler(refreshRate)
  37. if handler == nil {
  38. return nil, errors.New("task config incorrect")
  39. }
  40. return handler.GetCurrentPeriod(), nil
  41. }