62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
		
		
			
		
	
	
			62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
|  | 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 | ||
|  | } |