move tagmatching to database for deletes
parent
ce962c785e
commit
f4d0435102
|
@ -50,7 +50,8 @@ type Finisher interface {
|
|||
}
|
||||
|
||||
type Deleter interface {
|
||||
Delete(string, int64) error
|
||||
Inserter
|
||||
Delete(int64, interface{}) error
|
||||
}
|
||||
|
||||
type Optimizer interface {
|
||||
|
|
|
@ -481,8 +481,12 @@ func (pg *PostGIS) ProbePolygon(elem element.OSMElem) (bool, interface{}) {
|
|||
return false, nil
|
||||
}
|
||||
|
||||
func (pg *PostGIS) Delete(table string, id int64) error {
|
||||
pg.txRouter.Delete(table, id)
|
||||
func (pg *PostGIS) Delete(id int64, matches interface{}) error {
|
||||
if matches, ok := matches.([]mapping.Match); ok {
|
||||
for _, match := range matches {
|
||||
pg.txRouter.Delete(match.Table.Name, id)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -54,8 +54,8 @@ func (d *Deleter) deleteRelation(id int64, deleteRefs bool) {
|
|||
return
|
||||
}
|
||||
deleted := false
|
||||
for _, m := range d.tmPolygons.Match(&elem.Tags) {
|
||||
d.delDb.Delete(m.Table.Name, elem.Id)
|
||||
if ok, matches := d.delDb.ProbePolygon(elem.OSMElem); ok {
|
||||
d.delDb.Delete(elem.Id, matches)
|
||||
deleted = true
|
||||
}
|
||||
|
||||
|
@ -97,12 +97,12 @@ func (d *Deleter) deleteWay(id int64, deleteRefs bool) {
|
|||
return
|
||||
}
|
||||
deleted := false
|
||||
for _, m := range d.tmPolygons.Match(&elem.Tags) {
|
||||
d.delDb.Delete(m.Table.Name, elem.Id)
|
||||
if ok, matches := d.delDb.ProbePolygon(elem.OSMElem); ok {
|
||||
d.delDb.Delete(elem.Id, matches)
|
||||
deleted = true
|
||||
}
|
||||
for _, m := range d.tmLineStrings.Match(&elem.Tags) {
|
||||
d.delDb.Delete(m.Table.Name, elem.Id)
|
||||
if ok, matches := d.delDb.ProbeLineString(elem.OSMElem); ok {
|
||||
d.delDb.Delete(elem.Id, matches)
|
||||
deleted = true
|
||||
}
|
||||
if deleted && deleteRefs {
|
||||
|
@ -134,8 +134,8 @@ func (d *Deleter) deleteNode(id int64) {
|
|||
}
|
||||
deleted := false
|
||||
|
||||
for _, m := range d.tmPoints.Match(&elem.Tags) {
|
||||
d.delDb.Delete(m.Table.Name, elem.Id)
|
||||
if ok, matches := d.delDb.ProbePoint(elem.OSMElem); ok {
|
||||
d.delDb.Delete(elem.Id, matches)
|
||||
deleted = true
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue