setting.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package dbdata
  2. import (
  3. "encoding/json"
  4. "reflect"
  5. "xorm.io/xorm"
  6. )
  7. type SettingInstall struct {
  8. Installed bool `json:"installed"`
  9. }
  10. type SettingSmtp struct {
  11. Host string `json:"host"`
  12. Port int `json:"port"`
  13. Username string `json:"username"`
  14. Password string `json:"password"`
  15. From string `json:"from"`
  16. Encryption string `json:"encryption"`
  17. }
  18. type SettingAuditLog struct {
  19. AuditInterval int `json:"audit_interval"`
  20. LifeDay int `json:"life_day"`
  21. ClearTime string `json:"clear_time"`
  22. }
  23. type SettingOther struct {
  24. LinkAddr string `json:"link_addr"`
  25. Banner string `json:"banner"`
  26. Homeindex string `json:"homeindex"`
  27. AccountMail string `json:"account_mail"`
  28. }
  29. func StructName(data interface{}) string {
  30. ref := reflect.ValueOf(data)
  31. s := &ref
  32. if s.Kind() == reflect.Ptr {
  33. e := s.Elem()
  34. s = &e
  35. }
  36. name := s.Type().Name()
  37. return name
  38. }
  39. func SettingSessAdd(sess *xorm.Session, data interface{}) error {
  40. name := StructName(data)
  41. v, _ := json.Marshal(data)
  42. s := &Setting{Name: name, Data: v}
  43. _, err := sess.InsertOne(s)
  44. return err
  45. }
  46. func SettingSet(data interface{}) error {
  47. name := StructName(data)
  48. v, _ := json.Marshal(data)
  49. s := &Setting{Data: v}
  50. err := Update("name", name, s)
  51. return err
  52. }
  53. func SettingGet(data interface{}) error {
  54. name := StructName(data)
  55. s := &Setting{Name: name}
  56. err := One("name", name, s)
  57. if err != nil {
  58. return err
  59. }
  60. err = json.Unmarshal(s.Data, data)
  61. return err
  62. }
  63. func SettingGetAuditLog() (SettingAuditLog, error) {
  64. data := SettingAuditLog{}
  65. err := SettingGet(&data)
  66. if err == nil {
  67. return data, err
  68. }
  69. if !CheckErrNotFound(err) {
  70. return data, err
  71. }
  72. sess := xdb.NewSession()
  73. defer sess.Close()
  74. auditLog := SettingGetAuditLogDefault()
  75. err = SettingSessAdd(sess, auditLog)
  76. if err != nil {
  77. return data, err
  78. }
  79. return auditLog, nil
  80. }
  81. func SettingGetAuditLogDefault() SettingAuditLog {
  82. auditLog := SettingAuditLog{
  83. LifeDay: 0,
  84. ClearTime: "05:00",
  85. }
  86. return auditLog
  87. }