| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- // package arch_node -- архитектурный узел
- package arch_node
- import (
- "fmt"
- "github.com/google/uuid"
- "gitp78su.ipnodns.ru/svi/kern/v3"
- "gitp78su.ipnodns.ru/svi/kern/v3/krn/ktypes"
- "gitp78su.ipnodns.ru/svi/goarch/lev0/alias"
- )
- // ArchNode -- архитектурный узел
- type ArchNode struct {
- Id_ alias.ArchId `yaml:"id"` // Идентификатор узла
- Type_ alias.ArchType `yaml:"type"` // Тип узла
- ParentId_ alias.ArchId `yaml:"parent_id"` // ID предка
- }
- var (
- hassert = kern.GetFnHassert()
- )
- // NewArchNode -- возвращает новый архитектурный узел
- func NewArchNode(archType alias.ArchType, parentId alias.ArchId) *ArchNode {
- sf := &ArchNode{
- Id_: alias.ArchId(uuid.New().String()),
- Type_: archType,
- ParentId_: parentId,
- }
- sf.selfCheck()
- return sf
- }
- // ParentId -- возвращает ID родителя
- //
- //go:fix inline
- func (sf *ArchNode) ParentId() alias.ArchId {
- return sf.ParentId_
- }
- // Type -- возвращает тип объекта
- //
- //go:fix inline
- func (sf *ArchNode) Type() alias.ArchType {
- return sf.Type_
- }
- // Id -- возвращает ID объекта
- //
- //go:fix inline
- func (sf *ArchNode) Id() alias.ArchId {
- return sf.Id_
- }
- // SelfCheck -- самопроверка базового элемента
- func (sf *ArchNode) selfCheck() {
- hassert(sf.Id_ != "", "ArchNode.selfCheck(): id is empty")
- hassert(sf.Type_ != "", "ArchNode.selfCheck(): id:%s, Type_ is empty", sf.Id_)
- hassert(sf.ParentId_ != "", "ArchNode.selfCheck(): id:%s, ParentId_ is empty", sf.Id_)
- }
- // InvarNode -- проверка инвариантов
- func (sf *ArchNode) InvarNode() ktypes.Option[error] {
- if sf.Id_ == "" {
- err := fmt.Errorf("ArchNode.InvarNode(): Id_ is empty")
- return ktypes.NewSome(err)
- }
- if sf.Type_ == "" {
- err := fmt.Errorf("ArchNode.InvarNode(): id:%s, Type_ is empty", sf.Id_)
- return ktypes.NewSome(err)
- }
- if sf.ParentId_ == "" {
- err := fmt.Errorf("ArchNode.InvarNode(): id:%s, ParentId_ is empty", sf.Id_)
- return ktypes.NewSome(err)
- }
- return ktypes.NewNone[error]()
- }
|