package core import ( "github.com/pocketbase/dbx" ) // FindAllExternalAuthsByRecord returns all ExternalAuth models // linked to the provided auth record. func (app *BaseApp) FindAllExternalAuthsByRecord(authRecord *Record) ([]*ExternalAuth, error) { auths := []*ExternalAuth{} err := app.RecordQuery(CollectionNameExternalAuths). AndWhere(dbx.HashExp{ "collectionRef": authRecord.Collection().Id, "recordRef": authRecord.Id, }). OrderBy("created DESC"). All(&auths) if err != nil { return nil, err } return auths, nil } // FindAllExternalAuthsByCollection returns all ExternalAuth models // linked to the provided auth collection. func (app *BaseApp) FindAllExternalAuthsByCollection(collection *Collection) ([]*ExternalAuth, error) { auths := []*ExternalAuth{} err := app.RecordQuery(CollectionNameExternalAuths). AndWhere(dbx.HashExp{"collectionRef": collection.Id}). OrderBy("created DESC"). All(&auths) if err != nil { return nil, err } return auths, nil } // FindFirstExternalAuthByExpr returns the first available (the most recent created) // ExternalAuth model that satisfies the non-nil expression. func (app *BaseApp) FindFirstExternalAuthByExpr(expr dbx.Expression) (*ExternalAuth, error) { model := &ExternalAuth{} err := app.RecordQuery(CollectionNameExternalAuths). AndWhere(dbx.Not(dbx.HashExp{"providerId": ""})). // exclude empty providerIds AndWhere(expr). OrderBy("created DESC"). Limit(1). One(model) if err != nil { return nil, err } return model, nil }