db_time.go 578 B

12345678910111213141516171819202122
  1. package model
  2. import "github.com/QuantumNous/new-api/common"
  3. // GetDBTimestamp returns a UNIX timestamp from database time.
  4. // Falls back to application time on error.
  5. func GetDBTimestamp() int64 {
  6. var ts int64
  7. var err error
  8. switch {
  9. case common.UsingPostgreSQL:
  10. err = DB.Raw("SELECT EXTRACT(EPOCH FROM NOW())::bigint").Scan(&ts).Error
  11. case common.UsingSQLite:
  12. err = DB.Raw("SELECT strftime('%s','now')").Scan(&ts).Error
  13. default:
  14. err = DB.Raw("SELECT UNIX_TIMESTAMP()").Scan(&ts).Error
  15. }
  16. if err != nil || ts <= 0 {
  17. return common.GetTimestamp()
  18. }
  19. return ts
  20. }