Skip deleted values on insert, fix 0000-00-00 error
This commit is contained in:
parent
76c15ca84f
commit
2f3919884e
@ -311,12 +311,16 @@ func (r record) DeleteValues(record *types.Record) error {
|
||||
|
||||
func (r record) UpdateValues(recordID uint64, rvs types.RecordValueSet) (err error) {
|
||||
// Remove all records and prepare to be updated
|
||||
// @todo be more selective and delete only removed values
|
||||
// @todo be more selective and delete only removed and update/insert changed/new values
|
||||
if _, err = r.db().Exec("DELETE FROM compose_record_value WHERE record_id = ?", recordID); err != nil {
|
||||
return errors.Wrap(err, "could not remove record values")
|
||||
}
|
||||
|
||||
err = rvs.Walk(func(value *types.RecordValue) error {
|
||||
if value.DeletedAt != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
value.RecordID = recordID
|
||||
return r.db().Insert("compose_record_value", value)
|
||||
})
|
||||
|
||||
@ -538,6 +538,8 @@ func (svc record) Update(upd *types.Record) (rec *types.Record, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
upd.Values = upd.Values.GetClean()
|
||||
|
||||
// At this point we can return the value
|
||||
rec = upd
|
||||
|
||||
|
||||
@ -104,6 +104,9 @@ func (set RecordValueSet) Has(name string, place uint) bool {
|
||||
}
|
||||
|
||||
func (set RecordValueSet) SetUpdatedFlag(updated bool) {
|
||||
for i := range set {
|
||||
set[i].updated = updated
|
||||
}
|
||||
}
|
||||
|
||||
func (set RecordValueSet) GetUpdated() (out RecordValueSet) {
|
||||
@ -120,6 +123,24 @@ func (set RecordValueSet) GetUpdated() (out RecordValueSet) {
|
||||
return out
|
||||
}
|
||||
|
||||
func (set RecordValueSet) GetClean() (out RecordValueSet) {
|
||||
out = make([]*RecordValue, 0, len(set))
|
||||
for s := range set {
|
||||
if set[s].DeletedAt != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
out = append(out, &RecordValue{
|
||||
Name: set[s].Name,
|
||||
Value: set[s].Value,
|
||||
Ref: set[s].Ref,
|
||||
Place: set[s].Place,
|
||||
})
|
||||
}
|
||||
|
||||
return out
|
||||
}
|
||||
|
||||
// Merge merges old value set with new one and expects unchanged values to be in the new set
|
||||
//
|
||||
// This satisfies current requirements where record values are always
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user