54 lines
925 B
Go
54 lines
925 B
Go
![]() |
package postgis
|
||
|
|
||
![]() |
type TxRouter struct {
|
||
![]() |
Tables map[string]*TableTx
|
||
![]() |
}
|
||
|
|
||
![]() |
func newTxRouter(pg *PostGIS, bulkImport bool) *TxRouter {
|
||
|
ib := TxRouter{
|
||
![]() |
Tables: make(map[string]*TableTx),
|
||
![]() |
}
|
||
|
for tableName, table := range pg.Tables {
|
||
![]() |
tt := pg.NewTableTx(table, bulkImport)
|
||
![]() |
err := tt.Begin()
|
||
|
if err != nil {
|
||
|
panic(err) // TODO
|
||
|
}
|
||
|
ib.Tables[tableName] = tt
|
||
|
}
|
||
|
|
||
|
return &ib
|
||
|
}
|
||
|
|
||
![]() |
func (ib *TxRouter) End() error {
|
||
![]() |
for _, tt := range ib.Tables {
|
||
|
if err := tt.Commit(); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
![]() |
func (ib *TxRouter) Abort() error {
|
||
![]() |
for _, tt := range ib.Tables {
|
||
|
tt.Rollback()
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
![]() |
func (ib *TxRouter) Insert(table string, row []interface{}) {
|
||
![]() |
tt, ok := ib.Tables[table]
|
||
|
if !ok {
|
||
|
panic("unknown table " + table)
|
||
|
}
|
||
|
tt.Insert(row)
|
||
![]() |
}
|
||
|
|
||
![]() |
func (ib *TxRouter) Delete(table string, id int64) {
|
||
![]() |
tt, ok := ib.Tables[table]
|
||
|
if !ok {
|
||
|
panic("unknown table " + table)
|
||
![]() |
}
|
||
![]() |
tt.Delete(id)
|
||
![]() |
}
|