portfolio.go 684 B

12345678910111213141516171819202122232425262728293031
  1. package sentio
  2. import "github.com/samber/lo"
  3. type Portfolio interface {
  4. // Get returns Position of the symbol if exists in Portfolio
  5. Get(symbol string) (Position, bool)
  6. // Positions returns each Position we have in Portfolio
  7. Positions() []Position
  8. }
  9. type PortfolioStub []PositionStub
  10. func (p PortfolioStub) Get(symbol string) (Position, bool) {
  11. return lo.Find(p, func(item PositionStub) bool {
  12. return item.Symbol == symbol
  13. })
  14. }
  15. func (p PortfolioStub) Positions() []Position {
  16. return lo.Map(p, func(item PositionStub, _ int) Position {
  17. return item
  18. })
  19. }
  20. func NewPortfolioStub(elem ...PositionStub) Portfolio {
  21. var p PortfolioStub
  22. p = append(p, elem...)
  23. return p
  24. }