move tagmatching to database for deletes

master
Oliver Tonnhofer 2013-10-28 12:01:57 +01:00
parent ce962c785e
commit f4d0435102
3 changed files with 16 additions and 11 deletions

View File

@ -50,7 +50,8 @@ type Finisher interface {
}
type Deleter interface {
Delete(string, int64) error
Inserter
Delete(int64, interface{}) error
}
type Optimizer interface {

View File

@ -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
}

View File

@ -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
}