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  }