github.com/DapperCollectives/CAST/backend@v0.0.0-20230921221157-1350c8be7c96/main/models/strategy.go (about) 1 package models 2 3 import ( 4 s "github.com/DapperCollectives/CAST/backend/main/shared" 5 "github.com/georgysavva/scany/pgxscan" 6 ) 7 8 type VotingStrategy struct { 9 Key string `json:"key" validate:"required"` 10 Name string `json:"name" validate:"required"` 11 Description string `json:"description,omitempty"` 12 Scripts []s.CustomScript `json:"scripts,omitempty"` 13 } 14 15 // type CustomScript struct { 16 // Key string `json:"key" validate:"required"` 17 // Name string `json:"name" validate:"required"` 18 // Description string `json:"description" validate:"required"` 19 // Src string `json:"src" validate:"required"` 20 // } 21 22 func GetVotingStrategies(db *s.Database) ([]*VotingStrategy, error) { 23 var votingStrategies []*VotingStrategy 24 err := pgxscan.Select(db.Context, db.Conn, &votingStrategies, 25 ` 26 SELECT * FROM voting_strategies 27 `) 28 29 if err != nil { 30 return nil, err 31 } 32 33 return votingStrategies, nil 34 } 35 36 func IsNFTStrategy(name string) bool { 37 return name == "balance-of-nfts" || name == "float-nfts" || name == "custom-script" 38 }