1
0
mirror of https://github.com/muety/wakapi.git synced 2023-08-10 21:12:56 +03:00

fix: batch insert conflict bug (resolve #139)

This commit is contained in:
Ferdinand Mütsch 2021-03-05 21:39:21 +01:00
parent 4f86f67716
commit 292ae41c58
3 changed files with 14 additions and 3 deletions

View File

@ -32,7 +32,7 @@ type Heartbeat struct {
Hash string `json:"-" gorm:"type:varchar(17); uniqueIndex"` Hash string `json:"-" gorm:"type:varchar(17); uniqueIndex"`
Origin string `json:"-" hash:"ignore"` Origin string `json:"-" hash:"ignore"`
OriginId string `json:"-" hash:"ignore"` OriginId string `json:"-" hash:"ignore"`
CreatedAt CustomTime `json:"created_at" gorm:"type:timestamp" swaggertype:"primitive,number"` // https://gorm.io/docs/conventions.html#CreatedAt CreatedAt CustomTime `json:"created_at" gorm:"type:timestamp" swaggertype:"primitive,number" hash:"ignore"` // https://gorm.io/docs/conventions.html#CreatedAt
} }
func (h *Heartbeat) Valid() bool { func (h *Heartbeat) Valid() bool {

View File

@ -27,7 +27,18 @@ func (srv *HeartbeatService) Insert(heartbeat *models.Heartbeat) error {
} }
func (srv *HeartbeatService) InsertBatch(heartbeats []*models.Heartbeat) error { func (srv *HeartbeatService) InsertBatch(heartbeats []*models.Heartbeat) error {
return srv.repository.InsertBatch(heartbeats) hashes := make(map[string]bool)
// https://github.com/muety/wakapi/issues/139
filteredHeartbeats := make([]*models.Heartbeat, 0, len(heartbeats))
for _, hb := range heartbeats {
if _, ok := hashes[hb.Hash]; !ok {
filteredHeartbeats = append(filteredHeartbeats, hb)
hashes[hb.Hash] = true
}
}
return srv.repository.InsertBatch(filteredHeartbeats)
} }
func (srv *HeartbeatService) Count() (int64, error) { func (srv *HeartbeatService) Count() (int64, error) {

View File

@ -1 +1 @@
1.24.5 1.24.6