Avoid updating records when then didn't actually change

main
Max Ignatenko 2024-03-17 14:16:25 +00:00
parent 9c51a4621f
commit 0cc11e75b2
2 changed files with 12 additions and 8 deletions

View File

@ -232,7 +232,11 @@ retry:
for _, batch := range splitInBatshes(recs, 500) { for _, batch := range splitInBatshes(recs, 500) {
result := p.db.Model(&repo.Record{}). result := p.db.Model(&repo.Record{}).
Clauses(clause.OnConflict{ Clauses(clause.OnConflict{
Where: clause.Where{Exprs: []clause.Expression{clause.Or( Where: clause.Where{Exprs: []clause.Expression{
clause.Neq{
Column: clause.Column{Name: "content", Table: "records"},
Value: clause.Column{Name: "content", Table: "excluded"}},
clause.Or(
clause.Eq{Column: clause.Column{Name: "at_rev", Table: "records"}, Value: nil}, clause.Eq{Column: clause.Column{Name: "at_rev", Table: "records"}, Value: nil},
clause.Eq{Column: clause.Column{Name: "at_rev", Table: "records"}, Value: ""}, clause.Eq{Column: clause.Column{Name: "at_rev", Table: "records"}, Value: ""},
clause.Lt{ clause.Lt{

View File

@ -33,7 +33,7 @@ type Repo struct {
type Record struct { type Record struct {
ID models.ID `gorm:"primarykey"` ID models.ID `gorm:"primarykey"`
CreatedAt time.Time CreatedAt time.Time
UpdatedAt time.Time UpdatedAt time.Time `gorm:"autoUpdateTime:false"`
Repo models.ID `gorm:"index:idx_repo_record_key,unique,priority:1;not null;index:idx_repo_rev"` Repo models.ID `gorm:"index:idx_repo_record_key,unique,priority:1;not null;index:idx_repo_rev"`
Collection string `gorm:"index:idx_repo_record_key,unique,priority:2;not null"` Collection string `gorm:"index:idx_repo_record_key,unique,priority:2;not null"`
Rkey string `gorm:"index:idx_repo_record_key,unique,priority:3"` Rkey string `gorm:"index:idx_repo_record_key,unique,priority:3"`