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  }