github.com/condensat/bank-core@v0.1.0/database/query/fee.go (about)

     1  // Copyright 2020 Condensat Tech. All rights reserved.
     2  // Use of this source code is governed by a MIT
     3  // license that can be found in the LICENSE file.
     4  
     5  package query
     6  
     7  import (
     8  	"errors"
     9  
    10  	"github.com/condensat/bank-core/database"
    11  	"github.com/condensat/bank-core/database/model"
    12  
    13  	"github.com/jinzhu/gorm"
    14  )
    15  
    16  var (
    17  	ErrInvalidFeeID     = errors.New("Invalid FeeID")
    18  	ErrInvalidFeeAmount = errors.New("Invalid Fee Amount")
    19  )
    20  
    21  func AddFee(db database.Context, withdrawID model.WithdrawID, amount model.Float, data model.FeeData) (model.Fee, error) {
    22  	gdb := db.DB().(*gorm.DB)
    23  	if db == nil {
    24  		return model.Fee{}, database.ErrInvalidDatabase
    25  	}
    26  
    27  	if withdrawID == 0 {
    28  		return model.Fee{}, ErrInvalidWithdrawID
    29  	}
    30  	if amount <= 0.0 {
    31  		return model.Fee{}, ErrInvalidFeeAmount
    32  	}
    33  
    34  	result := model.Fee{
    35  		WithdrawID: withdrawID,
    36  		Amount:     &amount,
    37  		Data:       data,
    38  	}
    39  	err := gdb.Create(&result).Error
    40  	if err != nil {
    41  		return model.Fee{}, err
    42  	}
    43  
    44  	return result, nil
    45  }
    46  
    47  func GetFee(db database.Context, ID model.FeeID) (model.Fee, error) {
    48  	gdb := db.DB().(*gorm.DB)
    49  	if db == nil {
    50  		return model.Fee{}, database.ErrInvalidDatabase
    51  	}
    52  
    53  	if ID == 0 {
    54  		return model.Fee{}, ErrInvalidFeeID
    55  	}
    56  
    57  	var result model.Fee
    58  	err := gdb.
    59  		Where(&model.Fee{ID: ID}).
    60  		First(&result).Error
    61  	if err != nil {
    62  		return model.Fee{}, err
    63  	}
    64  
    65  	return result, nil
    66  }
    67  
    68  func GetFeeByWithdrawID(db database.Context, withdrawID model.WithdrawID) (model.Fee, error) {
    69  	gdb := db.DB().(*gorm.DB)
    70  	if db == nil {
    71  		return model.Fee{}, database.ErrInvalidDatabase
    72  	}
    73  
    74  	if withdrawID == 0 {
    75  		return model.Fee{}, ErrInvalidWithdrawID
    76  	}
    77  
    78  	var result model.Fee
    79  	err := gdb.
    80  		Where(&model.Fee{WithdrawID: withdrawID}).
    81  		First(&result).Error
    82  	if err != nil {
    83  		return model.Fee{}, err
    84  	}
    85  
    86  	return result, nil
    87  }