diff options
| author | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-08-11 12:38:45 +0200 |
|---|---|---|
| committer | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-08-11 12:38:45 +0200 |
| commit | d4e4616ba49f3a18a52e3197e1c77639a93b0330 (patch) | |
| tree | 50e9cc2b39f72ef8a2e61bff57fbc1239d55d4f0 /rides | |
| parent | 31ce2a1d5ff5746249cd4de96762f5740aff907a (diff) | |
feat: Add ride detail map
Diffstat (limited to 'rides')
| -rw-r--r-- | rides/rides.go | 12 | ||||
| -rw-r--r-- | rides/rides_test.go | 19 |
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))) |