0.2.4.1 mor statz

This commit is contained in:
Peder Vatn Austad
2024-05-26 21:30:40 +02:00
parent 4f01023df7
commit c41200c4a7

View File

@@ -7,21 +7,22 @@ import (
func InsertOrUpdateEstimatedVehicleJourney(db *sql.DB, values []interface{}) error { func InsertOrUpdateEstimatedVehicleJourney(db *sql.DB, values []interface{}) error {
query := ` query := `
INSERT INTO estimatedvehiclejourney (servicedelivery, recordedattime, lineref, directionref, datasource, datedvehiclejourneyref, vehiclemode, dataframeref, originref, destinationref, operatorref, vehicleref, cancellation, other) INSERT INTO estimatedvehiclejourney (servicedelivery, recordedattime, lineref, directionref, datasource, datedvehiclejourneyref, vehiclemode, dataframeref, originref, destinationref, operatorref, vehicleref, cancellation, other)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14)
ON CONFLICT (lineref, directionref, datasource, datedvehiclejourneyref) ON CONFLICT (lineref, directionref, datasource, datedvehiclejourneyref)
DO UPDATE SET DO UPDATE SET
servicedelivery = EXCLUDED.servicedelivery, servicedelivery = EXCLUDED.servicedelivery,
recordedattime = EXCLUDED.recordedattime, recordedattime = EXCLUDED.recordedattime,
vehiclemode = COALESCE(EXCLUDED.vehiclemode, estimatedvehiclejourney.vehiclemode), vehiclemode = COALESCE(EXCLUDED.vehiclemode, estimatedvehiclejourney.vehiclemode),
dataframeref = COALESCE(EXCLUDED.dataframeref, estimatedvehiclejourney.dataframeref), dataframeref = COALESCE(EXCLUDED.dataframeref, estimatedvehiclejourney.dataframeref),
originref = COALESCE(EXCLUDED.originref, estimatedvehiclejourney.originref), originref = COALESCE(EXCLUDED.originref, estimatedvehiclejourney.originref),
destinationref = COALESCE(EXCLUDED.destinationref, estimatedvehiclejourney.destinationref), destinationref = COALESCE(EXCLUDED.destinationref, estimatedvehiclejourney.destinationref),
operatorref = COALESCE(EXCLUDED.operatorref, estimatedvehiclejourney.operatorref), operatorref = COALESCE(EXCLUDED.operatorref, estimatedvehiclejourney.operatorref),
vehicleref = COALESCE(EXCLUDED.vehicleref, estimatedvehiclejourney.vehicleref), vehicleref = COALESCE(EXCLUDED.vehicleref, estimatedvehiclejourney.vehicleref),
cancellation = COALESCE(EXCLUDED.cancellation, estimatedvehiclejourney.cancellation), cancellation = COALESCE(EXCLUDED.cancellation, estimatedvehiclejourney.cancellation),
other = COALESCE(EXCLUDED.other, estimatedvehiclejourney.other); other = COALESCE(EXCLUDED.other, estimatedvehiclejourney.other)
` RETURNING CASE WHEN xmax = 0 THEN 'insert' ELSE 'update' END, id;
`
stmt, err := db.Prepare(query) stmt, err := db.Prepare(query)
if err != nil { if err != nil {
@@ -29,10 +30,14 @@ func InsertOrUpdateEstimatedVehicleJourney(db *sql.DB, values []interface{}) err
} }
defer stmt.Close() defer stmt.Close()
_, err = stmt.Exec(values...) var action string
var id int
err = stmt.QueryRow(values...).Scan(&action, &id)
if err != nil { if err != nil {
return fmt.Errorf("error executing statement: %v", err) return fmt.Errorf("error executing statement: %v", err)
} }
fmt.Printf("Action: %s, ID: %d\n", action, id)
return nil return nil
} }