db.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. package dao
  2. import "github.com/pkg/errors"
  3. func (d *Dao) First(pi interface{}) error {
  4. e := d.DB.Where(pi).First(pi).Error
  5. return errors.Wrapf(e, "model First %v", pi)
  6. }
  7. func (d *Dao) Insert(pi interface{}) error {
  8. e := d.DB.Create(pi).Error
  9. return errors.Wrapf(e, "model Insert %v", pi)
  10. }
  11. func (d *Dao) Find(c map[string]interface{}, pi interface{}) error {
  12. e := d.DB.Where(c).Find(pi).Error
  13. return errors.Wrapf(e, "Find %v", c)
  14. }
  15. func (d *Dao) Update(c map[string]interface{}, pi interface{}) error {
  16. e := d.DB.Where(c).Updates(pi).Error
  17. return errors.Wrapf(e, "Update %v \n%v", c, pi)
  18. }
  19. func (d *Dao) UpdateAll(c map[string]interface{}, pi interface{}) error {
  20. e := d.DB.Where(c).Select("*").Updates(pi).Error
  21. return errors.Wrapf(e, "UpdateAll %v \n%v", c, pi)
  22. }
  23. func (d *Dao) Raw(sql string, args map[string]interface{}, r interface{}) error {
  24. e := d.DB.Raw(sql, args).Scan(r).Error
  25. return errors.Wrapf(e, "model Raw %s, %v", sql, args)
  26. }
  27. func (d *Dao) InsertOrUpdate(pi interface{}) {
  28. // d.DB.FirstOrCreate(pi)
  29. // d.DB.Clauses(clause.OnConflict{Columns: []clause.Column{{Name: "id"}}, DoUpdates: clause.AssignmentColumns([]string{"code"})}).Create(&nm)
  30. }