Capstone/ui/db/vendors.go

56 lines
1.5 KiB
Go

package db
import (
"context"
"fmt"
"net/http"
"time"
"git.preston-baxter.com/Preston_PLB/capstone/frontend-service/config"
"git.preston-baxter.com/Preston_PLB/capstone/frontend-service/db/models"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func (db *DB) FindVendorAccountByUser(userId primitive.ObjectID) ([]models.VendorAccount, error) {
conf := config.Config()
opts := options.Find()
res, err := db.client.Database(conf.Mongo.EntDb).Collection(conf.Mongo.EntCol).Find(context.Background(), bson.M{"user_id": userId, "obj_info.ent": models.VENDOR_ACCOUNT_TYPE}, opts)
if err != nil {
if err == mongo.ErrNoDocuments {
return nil, nil
}
return nil, err
}
vendors := []models.VendorAccount{}
err = res.All(context.Background(), &vendors)
if err != nil {
return nil, err
}
return vendors, nil
}
//Make
func (db *DB) MakeRequestWithAccount(req *http.Request, va *models.VendorAccount) (*http.Response, error) {
//make new credential and save new credentials to DB
if va.OauthCredentials.ExpiresAt.Before(time.Now()) {
err := va.OauthCredentials.RefreshAccessToken(va.Name)
if err != nil {
return nil, err
}
err = db.SaveModel(va)
if err != nil {
return nil, err
}
}
client := http.Client{}
req.Header.Add("Authorization", fmt.Sprintf("%s: %s", va.OauthCredentials.TokenType, va.OauthCredentials.AccessToken))
return client.Do(req)
}