db.Insert takes OSMElem instead of row
parent
819df78d03
commit
1cba6ad9a3
|
@ -2,6 +2,7 @@ package database
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"imposm3/element"
|
||||||
"imposm3/mapping"
|
"imposm3/mapping"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
@ -18,15 +19,15 @@ type DB interface {
|
||||||
Abort() error
|
Abort() error
|
||||||
Init() error
|
Init() error
|
||||||
Close() error
|
Close() error
|
||||||
RowInserter
|
Inserter
|
||||||
}
|
}
|
||||||
|
|
||||||
type BulkBeginner interface {
|
type BulkBeginner interface {
|
||||||
BeginBulk() error
|
BeginBulk() error
|
||||||
}
|
}
|
||||||
|
|
||||||
type RowInserter interface {
|
type Inserter interface {
|
||||||
Insert(string, []interface{})
|
Insert(element.OSMElem, mapping.Match)
|
||||||
}
|
}
|
||||||
|
|
||||||
type Deployer interface {
|
type Deployer interface {
|
||||||
|
@ -81,12 +82,12 @@ func ConnectionType(param string) string {
|
||||||
|
|
||||||
type NullDb struct{}
|
type NullDb struct{}
|
||||||
|
|
||||||
func (n *NullDb) Init() error { return nil }
|
func (n *NullDb) Init() error { return nil }
|
||||||
func (n *NullDb) Begin() error { return nil }
|
func (n *NullDb) Begin() error { return nil }
|
||||||
func (n *NullDb) End() error { return nil }
|
func (n *NullDb) End() error { return nil }
|
||||||
func (n *NullDb) Close() error { return nil }
|
func (n *NullDb) Close() error { return nil }
|
||||||
func (n *NullDb) Abort() error { return nil }
|
func (n *NullDb) Abort() error { return nil }
|
||||||
func (n *NullDb) Insert(string, []interface{}) {}
|
func (n *NullDb) Insert(element.OSMElem, mapping.Match) {}
|
||||||
|
|
||||||
func NewNullDb(conf Config, m *mapping.Mapping) (DB, error) {
|
func NewNullDb(conf Config, m *mapping.Mapping) (DB, error) {
|
||||||
return &NullDb{}, nil
|
return &NullDb{}, nil
|
||||||
|
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
pq "github.com/olt/pq"
|
pq "github.com/olt/pq"
|
||||||
"imposm3/database"
|
"imposm3/database"
|
||||||
|
"imposm3/element"
|
||||||
"imposm3/logging"
|
"imposm3/logging"
|
||||||
"imposm3/mapping"
|
"imposm3/mapping"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
@ -429,8 +430,9 @@ func (pg *PostGIS) Open() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (pg *PostGIS) Insert(table string, row []interface{}) {
|
func (pg *PostGIS) Insert(elem element.OSMElem, match mapping.Match) {
|
||||||
pg.InputBuffer.Insert(table, row)
|
row := match.Row(&elem)
|
||||||
|
pg.InputBuffer.Insert(match.Table.Name, row)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (pg *PostGIS) Delete(table string, id int64) error {
|
func (pg *PostGIS) Delete(table string, id int64) error {
|
||||||
|
|
|
@ -20,15 +20,15 @@ type NodeWriter struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewNodeWriter(osmCache *cache.OSMCache, nodes chan *element.Node,
|
func NewNodeWriter(osmCache *cache.OSMCache, nodes chan *element.Node,
|
||||||
insertBuffer database.RowInserter, tagMatcher *mapping.TagMatcher, progress *stats.Statistics,
|
inserter database.Inserter, tagMatcher *mapping.TagMatcher, progress *stats.Statistics,
|
||||||
srid int) *OsmElemWriter {
|
srid int) *OsmElemWriter {
|
||||||
nw := NodeWriter{
|
nw := NodeWriter{
|
||||||
OsmElemWriter: OsmElemWriter{
|
OsmElemWriter: OsmElemWriter{
|
||||||
osmCache: osmCache,
|
osmCache: osmCache,
|
||||||
progress: progress,
|
progress: progress,
|
||||||
wg: &sync.WaitGroup{},
|
wg: &sync.WaitGroup{},
|
||||||
insertBuffer: insertBuffer,
|
inserter: inserter,
|
||||||
srid: srid,
|
srid: srid,
|
||||||
},
|
},
|
||||||
nodes: nodes,
|
nodes: nodes,
|
||||||
tagMatcher: tagMatcher,
|
tagMatcher: tagMatcher,
|
||||||
|
|
|
@ -21,16 +21,16 @@ type RelationWriter struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRelationWriter(osmCache *cache.OSMCache, diffCache *cache.DiffCache, rel chan *element.Relation,
|
func NewRelationWriter(osmCache *cache.OSMCache, diffCache *cache.DiffCache, rel chan *element.Relation,
|
||||||
insertBuffer database.RowInserter, tagMatcher *mapping.TagMatcher, progress *stats.Statistics,
|
inserter database.Inserter, tagMatcher *mapping.TagMatcher, progress *stats.Statistics,
|
||||||
srid int) *OsmElemWriter {
|
srid int) *OsmElemWriter {
|
||||||
rw := RelationWriter{
|
rw := RelationWriter{
|
||||||
OsmElemWriter: OsmElemWriter{
|
OsmElemWriter: OsmElemWriter{
|
||||||
osmCache: osmCache,
|
osmCache: osmCache,
|
||||||
diffCache: diffCache,
|
diffCache: diffCache,
|
||||||
progress: progress,
|
progress: progress,
|
||||||
wg: &sync.WaitGroup{},
|
wg: &sync.WaitGroup{},
|
||||||
insertBuffer: insertBuffer,
|
inserter: inserter,
|
||||||
srid: srid,
|
srid: srid,
|
||||||
},
|
},
|
||||||
rel: rel,
|
rel: rel,
|
||||||
tagMatcher: tagMatcher,
|
tagMatcher: tagMatcher,
|
||||||
|
|
|
@ -21,16 +21,16 @@ type WayWriter struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewWayWriter(osmCache *cache.OSMCache, diffCache *cache.DiffCache, ways chan *element.Way,
|
func NewWayWriter(osmCache *cache.OSMCache, diffCache *cache.DiffCache, ways chan *element.Way,
|
||||||
insertBuffer database.RowInserter, lineStringTagMatcher *mapping.TagMatcher,
|
inserter database.Inserter, lineStringTagMatcher *mapping.TagMatcher,
|
||||||
polygonTagMatcher *mapping.TagMatcher, progress *stats.Statistics, srid int) *OsmElemWriter {
|
polygonTagMatcher *mapping.TagMatcher, progress *stats.Statistics, srid int) *OsmElemWriter {
|
||||||
ww := WayWriter{
|
ww := WayWriter{
|
||||||
OsmElemWriter: OsmElemWriter{
|
OsmElemWriter: OsmElemWriter{
|
||||||
osmCache: osmCache,
|
osmCache: osmCache,
|
||||||
diffCache: diffCache,
|
diffCache: diffCache,
|
||||||
progress: progress,
|
progress: progress,
|
||||||
wg: &sync.WaitGroup{},
|
wg: &sync.WaitGroup{},
|
||||||
insertBuffer: insertBuffer,
|
inserter: inserter,
|
||||||
srid: srid,
|
srid: srid,
|
||||||
},
|
},
|
||||||
ways: ways,
|
ways: ways,
|
||||||
lineStringTagMatcher: lineStringTagMatcher,
|
lineStringTagMatcher: lineStringTagMatcher,
|
||||||
|
|
|
@ -21,15 +21,15 @@ type looper interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
type OsmElemWriter struct {
|
type OsmElemWriter struct {
|
||||||
osmCache *cache.OSMCache
|
osmCache *cache.OSMCache
|
||||||
diffCache *cache.DiffCache
|
diffCache *cache.DiffCache
|
||||||
progress *stats.Statistics
|
progress *stats.Statistics
|
||||||
insertBuffer database.RowInserter
|
inserter database.Inserter
|
||||||
wg *sync.WaitGroup
|
wg *sync.WaitGroup
|
||||||
limiter *limit.Limiter
|
limiter *limit.Limiter
|
||||||
writer looper
|
writer looper
|
||||||
srid int
|
srid int
|
||||||
expireTiles *expire.Tiles
|
expireTiles *expire.Tiles
|
||||||
}
|
}
|
||||||
|
|
||||||
func (writer *OsmElemWriter) SetLimiter(limiter *limit.Limiter) {
|
func (writer *OsmElemWriter) SetLimiter(limiter *limit.Limiter) {
|
||||||
|
@ -53,7 +53,6 @@ func (writer *OsmElemWriter) Close() {
|
||||||
|
|
||||||
func (writer *OsmElemWriter) insertMatches(elem *element.OSMElem, matches []mapping.Match) {
|
func (writer *OsmElemWriter) insertMatches(elem *element.OSMElem, matches []mapping.Match) {
|
||||||
for _, match := range matches {
|
for _, match := range matches {
|
||||||
row := match.Row(elem)
|
writer.inserter.Insert(*elem, match)
|
||||||
writer.insertBuffer.Insert(match.Table.Name, row)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue