diff options
Diffstat (limited to 'pkg/database/train_stop.go')
-rw-r--r-- | pkg/database/train_stop.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/pkg/database/train_stop.go b/pkg/database/train_stop.go new file mode 100644 index 0000000..27fb910 --- /dev/null +++ b/pkg/database/train_stop.go @@ -0,0 +1,36 @@ +package database + +import "git.adyxax.org/adyxax/trains/pkg/model" + +func (env *DBEnv) ReplaceAndImportTrainStops(trainStops []model.TrainStop) error { + pre_query := `DELETE FROM train_stops;` + query := ` + INSERT INTO train_stops + (id, name) + VALUES + ($1, $2);` + tx, err := env.db.Begin() + if err != nil { + return newTransactionError("Could not Begin()", err) + } + _, err = tx.Exec(pre_query) + if err != nil { + tx.Rollback() + return newQueryError("Could not run database query: most likely the schema is corrupted", err) + } + for i := 0; i < len(trainStops); i++ { + _, err = tx.Exec( + query, + trainStops[i].Id, + trainStops[i].Name, + ) + if err != nil { + tx.Rollback() + return newQueryError("Could not run database query: ", err) + } + } + if err := tx.Commit(); err != nil { + return newTransactionError("Could not commit transaction", err) + } + return nil +} |