summaryrefslogtreecommitdiff
path: root/rides
diff options
context:
space:
mode:
Diffstat (limited to 'rides')
-rw-r--r--rides/rides.go12
-rw-r--r--rides/rides_test.go19
2 files changed, 31 insertions, 0 deletions
diff --git a/rides/rides.go b/rides/rides.go
index fb6185f..8112c63 100644
--- a/rides/rides.go
+++ b/rides/rides.go
@@ -162,6 +162,18 @@ func GetByExternalID(db *sql.DB, externalID string) (Ride, bool, error) {
return ride, true, nil
}
+func GetByID(db *sql.DB, id int64) (Ride, bool, error) {
+ row := db.QueryRow("SELECT "+columns+" FROM rides WHERE id = ?", id)
+ ride, err := scanRide(row)
+ if err == sql.ErrNoRows {
+ return Ride{}, false, nil
+ }
+ if err != nil {
+ return Ride{}, false, err
+ }
+ return ride, true, nil
+}
+
type scanner interface {
Scan(dest ...any) error
}
diff --git a/rides/rides_test.go b/rides/rides_test.go
index 7f10ab5..1c382b0 100644
--- a/rides/rides_test.go
+++ b/rides/rides_test.go
@@ -85,6 +85,25 @@ func TestUpsertAndGet(t *testing.T) {
assert.False(t, ok)
}
+func TestGetByID(t *testing.T) {
+ db := newTestDB(t)
+ sample := sampleRide(t)
+ require.NoError(t, Save(db, sample))
+ stored, found, err := GetByExternalID(db, sample.ExternalID)
+ require.NoError(t, err)
+ require.True(t, found)
+
+ got, found, err := GetByID(db, stored.ID)
+ require.NoError(t, err)
+ require.True(t, found)
+ assert.Equal(t, sample.ExternalID, got.ExternalID)
+ assert.Equal(t, sample.Name, got.Name)
+
+ _, found, err = GetByID(db, 999999)
+ require.NoError(t, err)
+ assert.False(t, found)
+}
+
func TestSaveComputesCotacol(t *testing.T) {
db := newTestDB(t)
require.NoError(t, Save(db, sampleRide(t)))