package admin import ( "context" "errors" "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgxpool" ) type Store struct { database *pgxpool.Pool } func NewStore(database *pgxpool.Pool) *Store { return &Store{ database, } } func (store Store) Find(requestAdmin Admin) (Admin, error) { adminRows, err := store.database.Query(context.Background(), "select * from admin") if err != nil { return Admin{}, err } defer adminRows.Close() admin, found := createAdmin(requestAdmin, adminRows) if found { return admin, nil } return Admin{}, errors.New("invalid username or password") } func createAdmin(requestAdmin Admin, adminRows pgx.Rows) (Admin, bool) { var databaseAdmin Admin for adminRows.Next() { err := adminRows.Scan(&databaseAdmin.Username, &databaseAdmin.Password) if err != nil { return Admin{}, false } if databaseAdmin.Username == requestAdmin.Username && databaseAdmin.Password == requestAdmin.Password { return databaseAdmin, true } } return Admin{}, false }