// package actor -- сущность актора
package actor

import (
	"fmt"

	"gitp78su.ipnodns.ru/svi/goarch/pkg/elems/label"
	"gitp78su.ipnodns.ru/svi/goarch/pkg/elems/use_group_link"
)

// Actor -- сущность актора
type Actor struct {
	*label.Label
	*use_group_link.UseGroupLink
}

// NewActor -- возвращает новый актор
func NewActor(elem map[string]interface{}) (*Actor, error) {
	useGroupLink, err := use_group_link.NewUseGroupLink(elem)
	if err != nil {
		return nil, fmt.Errorf("NewActor(): in create UseGroupLink, err=\n\t%w", err)
	}

	sf := &Actor{
		UseGroupLink: useGroupLink,
		Label:        label.NewLabel(elem),
	}
	return sf, nil
}
