feat: return most backend API errors to frontend (#1836)

* feat: return most backend API errros to frontend

Signed-off-by: yehong <239859435@qq.com>

* refactor: reduce int type change

Signed-off-by: yehong <239859435@qq.com>

* feat: return err backend in token.go

Signed-off-by: yehong <239859435@qq.com>

---------

Signed-off-by: yehong <239859435@qq.com>
This commit is contained in:
yehong
2023-05-30 15:49:39 +08:00
committed by GitHub
parent 34151c0095
commit 02e692a300
105 changed files with 3788 additions and 1734 deletions

View File

@ -43,90 +43,87 @@ type Product struct {
ProviderObjs []*Provider `xorm:"-" json:"providerObjs"`
}
func GetProductCount(owner, field, value string) int {
func GetProductCount(owner, field, value string) (int64, error) {
session := GetSession(owner, -1, -1, field, value, "", "")
count, err := session.Count(&Product{})
if err != nil {
panic(err)
}
return int(count)
return session.Count(&Product{})
}
func GetProducts(owner string) []*Product {
func GetProducts(owner string) ([]*Product, error) {
products := []*Product{}
err := adapter.Engine.Desc("created_time").Find(&products, &Product{Owner: owner})
if err != nil {
panic(err)
return products, err
}
return products
return products, nil
}
func GetPaginationProducts(owner string, offset, limit int, field, value, sortField, sortOrder string) []*Product {
func GetPaginationProducts(owner string, offset, limit int, field, value, sortField, sortOrder string) ([]*Product, error) {
products := []*Product{}
session := GetSession(owner, offset, limit, field, value, sortField, sortOrder)
err := session.Find(&products)
if err != nil {
panic(err)
return products, err
}
return products
return products, nil
}
func getProduct(owner string, name string) *Product {
func getProduct(owner string, name string) (*Product, error) {
if owner == "" || name == "" {
return nil
return nil, nil
}
product := Product{Owner: owner, Name: name}
existed, err := adapter.Engine.Get(&product)
if err != nil {
panic(err)
return &product, nil
}
if existed {
return &product
return &product, nil
} else {
return nil
return nil, nil
}
}
func GetProduct(id string) *Product {
func GetProduct(id string) (*Product, error) {
owner, name := util.GetOwnerAndNameFromId(id)
return getProduct(owner, name)
}
func UpdateProduct(id string, product *Product) bool {
func UpdateProduct(id string, product *Product) (bool, error) {
owner, name := util.GetOwnerAndNameFromId(id)
if getProduct(owner, name) == nil {
return false
if p, err := getProduct(owner, name); err != nil {
return false, err
} else if p == nil {
return false, nil
}
affected, err := adapter.Engine.ID(core.PK{owner, name}).AllCols().Update(product)
if err != nil {
panic(err)
return false, err
}
return affected != 0
return affected != 0, nil
}
func AddProduct(product *Product) bool {
func AddProduct(product *Product) (bool, error) {
affected, err := adapter.Engine.Insert(product)
if err != nil {
panic(err)
return false, err
}
return affected != 0
return affected != 0, nil
}
func DeleteProduct(product *Product) bool {
func DeleteProduct(product *Product) (bool, error) {
affected, err := adapter.Engine.ID(core.PK{product.Owner, product.Name}).Delete(&Product{})
if err != nil {
panic(err)
return false, err
}
return affected != 0
return affected != 0, nil
}
func (product *Product) GetId() string {
@ -143,7 +140,11 @@ func (product *Product) isValidProvider(provider *Provider) bool {
}
func (product *Product) getProvider(providerId string) (*Provider, error) {
provider := getProvider(product.Owner, providerId)
provider, err := getProvider(product.Owner, providerId)
if err != nil {
return nil, err
}
if provider == nil {
return nil, fmt.Errorf("the payment provider: %s does not exist", providerId)
}
@ -156,7 +157,11 @@ func (product *Product) getProvider(providerId string) (*Provider, error) {
}
func BuyProduct(id string, providerName string, user *User, host string) (string, error) {
product := GetProduct(id)
product, err := GetProduct(id)
if err != nil {
return "", err
}
if product == nil {
return "", fmt.Errorf("the product: %s does not exist", id)
}
@ -205,7 +210,11 @@ func BuyProduct(id string, providerName string, user *User, host string) (string
ReturnUrl: product.ReturnUrl,
State: "Created",
}
affected := AddPayment(&payment)
affected, err := AddPayment(&payment)
if err != nil {
return "", err
}
if !affected {
return "", fmt.Errorf("failed to add payment: %s", util.StructToJson(payment))
}
@ -213,17 +222,23 @@ func BuyProduct(id string, providerName string, user *User, host string) (string
return payUrl, err
}
func ExtendProductWithProviders(product *Product) {
func ExtendProductWithProviders(product *Product) error {
if product == nil {
return
return nil
}
product.ProviderObjs = []*Provider{}
m := getProviderMap(product.Owner)
m, err := getProviderMap(product.Owner)
if err != nil {
return err
}
for _, providerItem := range product.Providers {
if provider, ok := m[providerItem]; ok {
product.ProviderObjs = append(product.ProviderObjs, provider)
}
}
return nil
}