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 }