github.com/NpoolPlatform/chain-middleware@v0.0.0-20240228100535-eb1bcf896eb9/pkg/crud/coin/usedfor/crud.go (about) 1 package coinusedfor 2 3 import ( 4 "fmt" 5 6 "github.com/NpoolPlatform/chain-middleware/pkg/db/ent" 7 entcoinusedfor "github.com/NpoolPlatform/chain-middleware/pkg/db/ent/coinusedfor" 8 "github.com/NpoolPlatform/libent-cruder/pkg/cruder" 9 types "github.com/NpoolPlatform/message/npool/basetypes/chain/v1" 10 11 "github.com/google/uuid" 12 ) 13 14 type Req struct { 15 CoinTypeID *uuid.UUID 16 UsedFor *types.CoinUsedFor 17 Priority *uint32 18 DeletedAt *uint32 19 } 20 21 func CreateSet(c *ent.CoinUsedForCreate, req *Req) *ent.CoinUsedForCreate { 22 if req.CoinTypeID != nil { 23 c.SetCoinTypeID(*req.CoinTypeID) 24 } 25 if req.UsedFor != nil { 26 c.SetUsedFor(req.UsedFor.String()) 27 } 28 if req.Priority != nil { 29 c.SetPriority(*req.Priority) 30 } 31 return c 32 } 33 34 func UpdateSet(u *ent.CoinUsedForUpdateOne, req *Req) *ent.CoinUsedForUpdateOne { 35 if req.Priority != nil { 36 u.SetPriority(*req.Priority) 37 } 38 if req.DeletedAt != nil { 39 u.SetDeletedAt(*req.DeletedAt) 40 } 41 return u 42 } 43 44 type Conds struct { 45 EntID *cruder.Cond 46 CoinTypeID *cruder.Cond 47 CoinTypeIDs *cruder.Cond 48 UsedFor *cruder.Cond 49 UsedFors *cruder.Cond 50 } 51 52 //nolint:gocyclo 53 func SetQueryConds(q *ent.CoinUsedForQuery, conds *Conds) (*ent.CoinUsedForQuery, error) { 54 if conds.EntID != nil { 55 id, ok := conds.EntID.Val.(uuid.UUID) 56 if !ok { 57 return nil, fmt.Errorf("invalid entid") 58 } 59 switch conds.EntID.Op { 60 case cruder.EQ: 61 q.Where(entcoinusedfor.EntID(id)) 62 default: 63 return nil, fmt.Errorf("invalid usedfor field") 64 } 65 } 66 if conds.CoinTypeID != nil { 67 id, ok := conds.CoinTypeID.Val.(uuid.UUID) 68 if !ok { 69 return nil, fmt.Errorf("invalid cointypeid") 70 } 71 switch conds.CoinTypeID.Op { 72 case cruder.EQ: 73 q.Where(entcoinusedfor.CoinTypeID(id)) 74 default: 75 return nil, fmt.Errorf("invalid usedfor field") 76 } 77 } 78 if conds.CoinTypeIDs != nil { 79 ids, ok := conds.CoinTypeIDs.Val.([]uuid.UUID) 80 if !ok { 81 return nil, fmt.Errorf("invalid cointypeids") 82 } 83 switch conds.CoinTypeIDs.Op { 84 case cruder.IN: 85 q.Where(entcoinusedfor.CoinTypeIDIn(ids...)) 86 default: 87 return nil, fmt.Errorf("invalid usedfor field") 88 } 89 } 90 if conds.UsedFor != nil { 91 usedFor, ok := conds.UsedFor.Val.(types.CoinUsedFor) 92 if !ok { 93 return nil, fmt.Errorf("invalid usedfor") 94 } 95 switch conds.UsedFor.Op { 96 case cruder.EQ: 97 q.Where(entcoinusedfor.UsedFor(usedFor.String())) 98 default: 99 return nil, fmt.Errorf("invalid usedfor field") 100 } 101 } 102 if conds.UsedFors != nil { 103 usedFors, ok := conds.UsedFors.Val.([]types.CoinUsedFor) 104 if !ok { 105 return nil, fmt.Errorf("invalid usedfors") 106 } 107 _usedFors := []string{} 108 for _, usedFor := range usedFors { 109 _usedFors = append(_usedFors, usedFor.String()) 110 } 111 switch conds.UsedFors.Op { 112 case cruder.IN: 113 q.Where(entcoinusedfor.UsedForIn(_usedFors...)) 114 default: 115 return nil, fmt.Errorf("invalid usedfor field") 116 } 117 } 118 q.Where(entcoinusedfor.DeletedAt(0)) 119 return q, nil 120 }