query_db_base.go 1007 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package base
  2. import (
  3. "fmt"
  4. "gorm.io/gorm"
  5. )
  6. type QueryBaseHandler[T any] struct {
  7. }
  8. func NewQueryBaseHandler[T any](t *T) *QueryBaseHandler[T] {
  9. return &QueryBaseHandler[T]{}
  10. }
  11. func (*QueryBaseHandler[T]) DeleteOne(db *gorm.DB) error {
  12. tempInfo := new(T)
  13. // 先通过Id获取记录'
  14. if err := db.First(&tempInfo).Error; err != nil {
  15. return err
  16. }
  17. exCmd := db.Model(&tempInfo).Delete(&tempInfo)
  18. if exCmd.RowsAffected != 1 {
  19. return fmt.Errorf("delete fail")
  20. }
  21. if exCmd.Error != nil {
  22. return exCmd.Error
  23. }
  24. return nil
  25. }
  26. func (*QueryBaseHandler[T]) Get(db *gorm.DB) (*T, error) {
  27. tempInfo := new(T)
  28. // 先通过Id获取记录'
  29. if err := db.First(&tempInfo).Error; err != nil {
  30. return tempInfo, err
  31. }
  32. return tempInfo, nil
  33. }
  34. func (*QueryBaseHandler[T]) List(db *gorm.DB, req ListRequestInterface[T]) (*ListResponse[T], error) {
  35. return req.Query(db)
  36. }
  37. func (*QueryBaseHandler[T]) Export(db *gorm.DB, req ListRequestInterface[T]) (*ListResponse[T], error) {
  38. return req.Query(db)
  39. }