package sentio

import "github.com/samber/lo"

type Portfolio interface {
	// Get returns Position of the symbol if exists in Portfolio
	Get(symbol string) (Position, bool)

	// Positions returns each Position we have in Portfolio
	Positions() []Position
}

type PortfolioStub []PositionStub

func (p PortfolioStub) Get(symbol string) (Position, bool) {
	return lo.Find(p, func(item PositionStub) bool {
		return item.Symbol == symbol
	})
}

func (p PortfolioStub) Positions() []Position {
	return lo.Map(p, func(item PositionStub, _ int) Position {
		return item
	})
}

func NewPortfolioStub(elem ...PositionStub) Portfolio {
	var p PortfolioStub
	p = append(p, elem...)
	return p
}