github.com/condensat/bank-core@v0.1.0/database/query/assetinfo.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 "time" 10 11 "github.com/condensat/bank-core/database" 12 "github.com/condensat/bank-core/database/model" 13 14 "github.com/jinzhu/gorm" 15 ) 16 17 var ( 18 ErrInvalidAssetInfo = errors.New("Invalid AssetInfo") 19 ) 20 21 // AddOrUpdateAssetInfo 22 func AddOrUpdateAssetInfo(db database.Context, entry model.AssetInfo) (model.AssetInfo, error) { 23 gdb := db.DB().(*gorm.DB) 24 if db == nil { 25 return model.AssetInfo{}, database.ErrInvalidDatabase 26 } 27 28 if !entry.Valid() { 29 return model.AssetInfo{}, ErrInvalidAssetInfo 30 } 31 32 entry.LastUpdate = time.Now().UTC().Truncate(time.Second) 33 34 var result model.AssetInfo 35 err := gdb. 36 Where(model.AssetInfo{ 37 AssetID: entry.AssetID, 38 }). 39 Assign(entry). 40 FirstOrCreate(&result).Error 41 42 return result, err 43 } 44 45 // GetAssetInfo 46 func GetAssetInfo(db database.Context, assetID model.AssetID) (model.AssetInfo, error) { 47 gdb := db.DB().(*gorm.DB) 48 if db == nil { 49 return model.AssetInfo{}, database.ErrInvalidDatabase 50 } 51 52 if assetID == 0 { 53 return model.AssetInfo{}, ErrInvalidAssetID 54 } 55 56 var result model.AssetInfo 57 err := gdb. 58 Where(&model.AssetInfo{AssetID: assetID}). 59 First(&result).Error 60 if err != nil { 61 return model.AssetInfo{}, err 62 } 63 64 return result, nil 65 }