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

70 lines
1.8 KiB

  1. package Models
  2. import (
  3. "database/sql/driver"
  4. "errors"
  5. )
  6. // MessageExpiry holds values for how long messages should expire by default
  7. type MessageExpiry []uint8
  8. const (
  9. // MessageExpiryFifteenMin expires after 15 minutes
  10. MessageExpiryFifteenMin = "fifteen_min"
  11. // MessageExpiryThirtyMin expires after 30 minutes
  12. MessageExpiryThirtyMin = "thirty_min"
  13. // MessageExpiryOneHour expires after one hour
  14. MessageExpiryOneHour = "one_hour"
  15. // MessageExpiryThreeHour expires after three hours
  16. MessageExpiryThreeHour = "three_hour"
  17. // MessageExpirySixHour expires after six hours
  18. MessageExpirySixHour = "six_hour"
  19. // MessageExpiryTwelveHour expires after twelve hours
  20. MessageExpiryTwelveHour = "twelve_hour"
  21. // MessageExpiryOneDay expires after one day
  22. MessageExpiryOneDay = "one_day"
  23. // MessageExpiryThreeDay expires after three days
  24. MessageExpiryThreeDay = "three_day"
  25. // MessageExpiryNoExpiry never expires
  26. MessageExpiryNoExpiry = "no_expiry"
  27. )
  28. // MessageExpiryValues list of all expiry values for validation
  29. var MessageExpiryValues = []string{
  30. MessageExpiryFifteenMin,
  31. MessageExpiryThirtyMin,
  32. MessageExpiryOneHour,
  33. MessageExpiryThreeHour,
  34. MessageExpirySixHour,
  35. MessageExpiryTwelveHour,
  36. MessageExpiryOneDay,
  37. MessageExpiryThreeDay,
  38. MessageExpiryNoExpiry,
  39. }
  40. // Scan new value into MessageExpiry
  41. func (e *MessageExpiry) Scan(value interface{}) error {
  42. var (
  43. strValue = value.(string)
  44. m string
  45. )
  46. for _, m = range MessageExpiryValues {
  47. if strValue != m {
  48. continue
  49. }
  50. *e = MessageExpiry(strValue)
  51. return nil
  52. }
  53. return errors.New("Invalid MessageExpiry value")
  54. }
  55. // Value gets value out of MessageExpiry column
  56. func (e MessageExpiry) Value() (driver.Value, error) {
  57. return string(e), nil
  58. }
  59. func (e MessageExpiry) String() string {
  60. return string(e)
  61. }