github.com/NpoolPlatform/chain-middleware@v0.0.0-20240228100535-eb1bcf896eb9/pkg/crud/coin/fiat/crud.go (about)

     1  package coinfiat
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/NpoolPlatform/chain-middleware/pkg/db/ent"
     7  	entcoinfiat "github.com/NpoolPlatform/chain-middleware/pkg/db/ent/coinfiat"
     8  	"github.com/NpoolPlatform/libent-cruder/pkg/cruder"
     9  	basetypes "github.com/NpoolPlatform/message/npool/basetypes/v1"
    10  
    11  	"github.com/google/uuid"
    12  )
    13  
    14  type Req struct {
    15  	CoinTypeID *uuid.UUID
    16  	FiatID     *uuid.UUID
    17  	FeedType   *basetypes.CurrencyFeedType
    18  	DeletedAt  *uint32
    19  }
    20  
    21  func CreateSet(c *ent.CoinFiatCreate, req *Req) *ent.CoinFiatCreate {
    22  	if req.CoinTypeID != nil {
    23  		c.SetCoinTypeID(*req.CoinTypeID)
    24  	}
    25  	if req.FiatID != nil {
    26  		c.SetFiatID(*req.FiatID)
    27  	}
    28  	if req.FeedType != nil {
    29  		c.SetFeedType(req.FeedType.String())
    30  	}
    31  	return c
    32  }
    33  
    34  func UpdateSet(u *ent.CoinFiatUpdateOne, req *Req) *ent.CoinFiatUpdateOne {
    35  	if req.DeletedAt != nil {
    36  		u.SetDeletedAt(*req.DeletedAt)
    37  	}
    38  	return u
    39  }
    40  
    41  type Conds struct {
    42  	EntID       *cruder.Cond
    43  	CoinTypeID  *cruder.Cond
    44  	CoinTypeIDs *cruder.Cond
    45  	FiatID      *cruder.Cond
    46  }
    47  
    48  func SetQueryConds(q *ent.CoinFiatQuery, conds *Conds) (*ent.CoinFiatQuery, error) {
    49  	if conds.EntID != nil {
    50  		id, ok := conds.EntID.Val.(uuid.UUID)
    51  		if !ok {
    52  			return nil, fmt.Errorf("invalid entid")
    53  		}
    54  		switch conds.EntID.Op {
    55  		case cruder.EQ:
    56  			q.Where(entcoinfiat.EntID(id))
    57  		default:
    58  			return nil, fmt.Errorf("invalid currency field")
    59  		}
    60  	}
    61  	if conds.CoinTypeID != nil {
    62  		id, ok := conds.CoinTypeID.Val.(uuid.UUID)
    63  		if !ok {
    64  			return nil, fmt.Errorf("invalid cointypeid")
    65  		}
    66  		switch conds.CoinTypeID.Op {
    67  		case cruder.EQ:
    68  			q.Where(entcoinfiat.CoinTypeID(id))
    69  		default:
    70  			return nil, fmt.Errorf("invalid currency field")
    71  		}
    72  	}
    73  	if conds.CoinTypeIDs != nil {
    74  		ids, ok := conds.CoinTypeIDs.Val.([]uuid.UUID)
    75  		if !ok {
    76  			return nil, fmt.Errorf("invalid cointypeids")
    77  		}
    78  		switch conds.CoinTypeIDs.Op {
    79  		case cruder.IN:
    80  			q.Where(entcoinfiat.CoinTypeIDIn(ids...))
    81  		default:
    82  			return nil, fmt.Errorf("invalid currency field")
    83  		}
    84  	}
    85  	if conds.FiatID != nil {
    86  		id, ok := conds.FiatID.Val.(uuid.UUID)
    87  		if !ok {
    88  			return nil, fmt.Errorf("invalid fiatid")
    89  		}
    90  		switch conds.FiatID.Op {
    91  		case cruder.EQ:
    92  			q.Where(entcoinfiat.FiatID(id))
    93  		default:
    94  			return nil, fmt.Errorf("invalid currency field")
    95  		}
    96  	}
    97  	q.Where(entcoinfiat.DeletedAt(0))
    98  	return q, nil
    99  }