chapter_logs_user_details_scope.go 984 B

123456789101112131415161718192021222324252627282930313233343536
  1. package model
  2. import (
  3. "fmt"
  4. "gorm.io/gorm"
  5. "time"
  6. )
  7. // DynamicChapterLogsUserDetail 动态战斗日志表名(时间分表)
  8. type DynamicChapterLogsUserDetail interface {
  9. TimeInfo() string
  10. }
  11. // TimeInfo 根据时间进行分表,格式年+月
  12. func (clog *ChapterLogsUserDetail) TimeInfo() string {
  13. if clog.EventAt == 0 {
  14. return "chapter_logs_user_details"
  15. }
  16. return fmt.Sprintf("chapter_logs_user_details_%v", time.Unix(int64(clog.EventAt), 0).Format("200601"))
  17. }
  18. // ChapterLogsUserDetailTable gormDB的scopes, 根据clog来获取对应的表名
  19. func ChapterLogsUserDetailTable(clog ChapterLogsUserDetail) func(tx *gorm.DB) *gorm.DB {
  20. return func(tx *gorm.DB) *gorm.DB {
  21. return tx.Table(clog.TimeInfo())
  22. }
  23. }
  24. func ChapterLogsUserDetailTableSetDate(n string) func(tx *gorm.DB) *gorm.DB {
  25. return func(tx *gorm.DB) *gorm.DB {
  26. if n == "" {
  27. return tx.Table("chapter_logs_user_details")
  28. }
  29. return tx.Table(fmt.Sprintf("chapter_logs_user_details_%v", n))
  30. }
  31. }