perf(go): simplify realtime plate lookup
This commit is contained in:
@@ -288,7 +288,7 @@ func (r *BindingPlateResolver) PlateByVIN(ctx context.Context, vin string) (stri
|
||||
if vin == "" {
|
||||
return "", sql.ErrNoRows
|
||||
}
|
||||
query := "SELECT plate FROM " + r.table + " WHERE vin = ? AND plate IS NOT NULL AND plate <> '' ORDER BY updated_at DESC LIMIT 1"
|
||||
query := "SELECT plate FROM " + r.table + " WHERE vin = ? AND plate IS NOT NULL AND plate <> ''"
|
||||
var plate string
|
||||
err := r.queryer.QueryRowContext(ctx, query, vin).Scan(&plate)
|
||||
if err != nil {
|
||||
|
||||
@@ -216,6 +216,28 @@ func TestSnapshotWriterBackfillsPlateFromBindingByVIN(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestBindingPlateResolverUsesPrimaryKeyLookupWithoutSort(t *testing.T) {
|
||||
db, mock, err := sqlmock.New()
|
||||
if err != nil {
|
||||
t.Fatalf("sqlmock.New() error = %v", err)
|
||||
}
|
||||
defer db.Close()
|
||||
mock.ExpectQuery("SELECT plate FROM vehicle_identity_binding WHERE vin = \\? AND plate IS NOT NULL AND plate <> ''$").
|
||||
WithArgs("VIN001").
|
||||
WillReturnRows(sqlmock.NewRows([]string{"plate"}).AddRow("沪A12345"))
|
||||
|
||||
plate, err := NewBindingPlateResolver(db, "vehicle_identity_binding").PlateByVIN(context.Background(), " VIN001 ")
|
||||
if err != nil {
|
||||
t.Fatalf("PlateByVIN() error = %v", err)
|
||||
}
|
||||
if plate != "沪A12345" {
|
||||
t.Fatalf("plate = %q", plate)
|
||||
}
|
||||
if err := mock.ExpectationsWereMet(); err != nil {
|
||||
t.Fatalf("sql expectations: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSnapshotWriterCachesBindingPlateByVIN(t *testing.T) {
|
||||
exec := &recordingSnapshotExec{}
|
||||
resolver := &recordingPlateResolver{plate: "沪A12345"}
|
||||
|
||||
Reference in New Issue
Block a user