mirror of
https://github.com/zitadel/zitadel.git
synced 2024-12-20 06:47:31 +00:00
102 lines
2.8 KiB
Go
102 lines
2.8 KiB
Go
|
package view
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"time"
|
||
|
|
||
|
"github.com/caos/logging"
|
||
|
"github.com/caos/zitadel/internal/errors"
|
||
|
es_models "github.com/caos/zitadel/internal/eventstore/models"
|
||
|
org_es_model "github.com/caos/zitadel/internal/org/model"
|
||
|
org_model "github.com/caos/zitadel/internal/org/model"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
OrgKeyOrgDomain = "domain"
|
||
|
OrgKeyOrgID = "id"
|
||
|
OrgKeyOrgName = "name"
|
||
|
OrgKeyResourceOwner = "resource_owner"
|
||
|
OrgKeyState = "org_state"
|
||
|
)
|
||
|
|
||
|
type OrgView struct {
|
||
|
ID string `json:"-" gorm:"column:id;primary_key"`
|
||
|
CreationDate time.Time `json:"-" gorm:"column:creation_date"`
|
||
|
ChangeDate time.Time `json:"-" gorm:"column:change_date"`
|
||
|
ResourceOwner string `json:"-" gorm:"column:resource_owner"`
|
||
|
State int32 `json:"-" gorm:"column:org_state"`
|
||
|
Sequence uint64 `json:"-" gorm:"column:sequence"`
|
||
|
|
||
|
Name string `json:"name" gorm:"column:name"`
|
||
|
Domain string `json:"domain" gorm:"column:domain"`
|
||
|
}
|
||
|
|
||
|
func OrgFromModel(org *org_model.OrgView) *OrgView {
|
||
|
return &OrgView{
|
||
|
Domain: org.Domain,
|
||
|
ChangeDate: org.ChangeDate,
|
||
|
CreationDate: org.CreationDate,
|
||
|
ID: org.ID,
|
||
|
Name: org.Name,
|
||
|
ResourceOwner: org.ResourceOwner,
|
||
|
Sequence: org.Sequence,
|
||
|
State: int32(org.State),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func OrgToModel(org *OrgView) *org_model.OrgView {
|
||
|
return &org_model.OrgView{
|
||
|
Domain: org.Domain,
|
||
|
ChangeDate: org.ChangeDate,
|
||
|
CreationDate: org.CreationDate,
|
||
|
ID: org.ID,
|
||
|
Name: org.Name,
|
||
|
ResourceOwner: org.ResourceOwner,
|
||
|
Sequence: org.Sequence,
|
||
|
State: org_model.OrgState(org.State),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func OrgsToModel(orgs []*OrgView) []*org_model.OrgView {
|
||
|
modelOrgs := make([]*org_model.OrgView, len(orgs))
|
||
|
|
||
|
for i, org := range orgs {
|
||
|
modelOrgs[i] = OrgToModel(org)
|
||
|
}
|
||
|
|
||
|
return modelOrgs
|
||
|
}
|
||
|
|
||
|
func (o *OrgView) AppendEvent(event *es_models.Event) (err error) {
|
||
|
switch event.Type {
|
||
|
case org_es_model.OrgAdded:
|
||
|
o.CreationDate = event.CreationDate
|
||
|
o.State = int32(org_model.ORGSTATE_ACTIVE)
|
||
|
o.setRootData(event)
|
||
|
err = o.SetData(event)
|
||
|
case org_es_model.OrgChanged:
|
||
|
o.setRootData(event)
|
||
|
err = o.SetData(event)
|
||
|
case org_es_model.OrgDeactivated:
|
||
|
o.State = int32(org_model.ORGSTATE_INACTIVE)
|
||
|
case org_es_model.OrgReactivated:
|
||
|
o.State = int32(org_model.ORGSTATE_ACTIVE)
|
||
|
}
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
func (o *OrgView) setRootData(event *es_models.Event) {
|
||
|
o.ChangeDate = event.CreationDate
|
||
|
o.Sequence = event.Sequence
|
||
|
o.ID = event.AggregateID
|
||
|
o.ResourceOwner = event.ResourceOwner
|
||
|
}
|
||
|
|
||
|
func (o *OrgView) SetData(event *es_models.Event) error {
|
||
|
if err := json.Unmarshal(event.Data, o); err != nil {
|
||
|
logging.Log("VIEW-5W7Op").WithError(err).Error("could not unmarshal event data")
|
||
|
return errors.ThrowInternal(err, "VIEW-HZKME", "Could not unmarshal data")
|
||
|
}
|
||
|
return nil
|
||
|
}
|