utils.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package controllers
  2. import (
  3. "database/sql"
  4. "reflect"
  5. "xugu_license/internal/models"
  6. )
  7. // compareNullInt32 compares two sql.NullInt32 values
  8. func compareNullInt32(a, b sql.NullInt32) bool {
  9. return a.Valid == b.Valid && (!a.Valid || a.Int32 == b.Int32)
  10. }
  11. // compareNullInt64 compares two sql.NullInt64 values
  12. func compareNullInt64(a, b sql.NullInt64) bool {
  13. return a.Valid == b.Valid && (!a.Valid || a.Int64 == b.Int64)
  14. }
  15. // compareNullString compares two sql.NullString values
  16. func compareNullString(a, b sql.NullString) bool {
  17. return a.Valid == b.Valid && (!a.Valid || a.String == b.String)
  18. }
  19. // compareNullTime compares two sql.NullTime values
  20. func compareNullTime(a, b sql.NullTime) bool {
  21. return a.Valid == b.Valid && (!a.Valid || a.Time.Equal(b.Time))
  22. }
  23. // compareOALicenseInfo compares two OALicenseInfo structs
  24. func compareOALicenseInfo(a, b models.OALicenseInfo) bool {
  25. return reflect.DeepEqual(a.LicInfo, b.LicInfo) && reflect.DeepEqual(a.GenrateInfo, b.GenrateInfo)
  26. }
  27. // CompareOALicenseInfo compares two OALicenseInfo structs
  28. func CompareOALicenseInfo(a, b *models.OALicenseInfo) bool {
  29. if a == nil || b == nil {
  30. return a == b // 如果其中一个是 nil 则只有两者都为 nil 才相等
  31. }
  32. // 使用 reflect.DeepEqual 递归比较两个结构体
  33. return reflect.DeepEqual(a.LicInfo, b.LicInfo) && reflect.DeepEqual(a.GenrateInfo, b.GenrateInfo)
  34. }