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 }