diff --git a/core/record_query.go b/core/record_query.go index 20139e37..f653621b 100644 --- a/core/record_query.go +++ b/core/record_query.go @@ -314,9 +314,19 @@ func (app *BaseApp) FindAllRecords(collectionModelOrIdentifier any, exprs ...dbx // FindFirstRecordByData returns the first found record matching // the provided key-value pair. func (app *BaseApp) FindFirstRecordByData(collectionModelOrIdentifier any, key string, value any) (*Record, error) { + collection, err := getCollectionByModelOrIdentifier(app, collectionModelOrIdentifier) + if err != nil { + return nil, err + } + + field := collection.Fields.GetByName(key) + if field == nil { + return nil, errors.New("invalid or missing field " + key) + } + record := &Record{} - err := app.RecordQuery(collectionModelOrIdentifier). + err = app.RecordQuery(collection). AndWhere(dbx.HashExp{inflector.Columnify(key): value}). Limit(1). One(record) diff --git a/core/record_query_test.go b/core/record_query_test.go index fe38b406..91c1ab17 100644 --- a/core/record_query_test.go +++ b/core/record_query_test.go @@ -525,6 +525,13 @@ func TestFindFirstRecordByData(t *testing.T) { "", true, }, + { + "demo2", + "invalid_or_missing", + "llvuca81nly1qls", + "", + true, + }, { "demo2", "id",