Account
Commands
- AccountCommandActivate
- AccountCommandChangePassword
- AccountCommandConfirmPasswordReset
- AccountCommandConfirmRegister
- AccountCommandCreate
- AccountCommandDeleteAttributes
- AccountCommandLogin
- AccountCommandLoginOAuth
- AccountCommandLogout
- AccountCommandRegister
- AccountCommandRemove
- AccountCommandRequestPasswordReset
- AccountCommandSetAttributes
- AccountCommandUpdateCredentials
- AccountCommandUpdateState
AccountCommandActivate
AccountCommandActivate is a domain command to activate an account.
Domain Command Struct:
type AccountCommandActivate struct {
// Outline of the command
Email string `json:"email"` // Email of the account to activate.
}
Domain Command Handling Method: AccountCommandActivate is a domain command handler handling the activation of an account. (AccountCommandActivate)
func (ch *commandHandler) AccountCommandActivate(ctx context.Context, cmd comby.Command, domainCmd *AccountCommandActivate) ([]comby.Event, error)
AccountCommandChangePassword
Domain Command Struct:
type AccountCommandChangePassword struct {
Email string `json:"email"`
PasswordCurrent string `json:"passwordCurrent"`
NewPassword string `json:"newPassword"`
}
Domain Command Handling Method:
func (ch *commandHandler) AccountCommandChangePassword(ctx context.Context, cmd comby.Command, domainCmd *AccountCommandChangePassword) ([]comby.Event, error)
AccountCommandConfirmPasswordReset
Domain Command Struct:
type AccountCommandConfirmPasswordReset struct {
OneTimeToken string `json:"oneTimeToken"`
NewPassword string `json:"newPassword"`
}
Domain Command Handling Method:
func (ch *commandHandler) AccountCommandConfirmPasswordReset(ctx context.Context, cmd comby.Command, domainCmd *AccountCommandConfirmPasswordReset) ([]comby.Event, error)
AccountCommandConfirmRegister
Domain Command Struct:
type AccountCommandConfirmRegister struct {
OneTimeToken string `json:"oneTimeToken"`
}
Domain Command Handling Method:
func (ch *commandHandler) AccountCommandConfirmRegister(ctx context.Context, cmd comby.Command, domainCmd *AccountCommandConfirmRegister) ([]comby.Event, error)
AccountCommandCreate
Domain Command Struct:
type AccountCommandCreate struct {
AccountUuid string `json:"accountUuid"`
Email string `json:"email,omitempty"`
Password string `json:"password,omitempty"`
SessionKey string `json:"sessionKey"`
}
Domain Command Handling Method:
func (ch *commandHandler) AccountCommandAdd(ctx context.Context, cmd comby.Command, domainCmd *AccountCommandCreate) ([]comby.Event, error)
AccountCommandDeleteAttributes
Domain Command Struct:
type AccountCommandDeleteAttributes struct {
AccountUuid string `json:"accountUuid"`
AttributeKeys []string `json:"attributeKeys"`
}
Domain Command Handling Method:
func (ch *commandHandler) AccountCommandDeleteAttributes(ctx context.Context, cmd comby.Command, domainCmd *AccountCommandDeleteAttributes) ([]comby.Event, error)
AccountCommandLogin
Domain Command Struct:
type AccountCommandLogin struct {
Email string `json:"email"`
Password string `json:"password"`
SessionUuid string `json:"sessionUuid"`
SessionKey string `json:"sessionKey"`
}
Domain Command Handling Method:
func (ch *commandHandler) AccountCommandLogin(ctx context.Context, cmd comby.Command, domainCmd *AccountCommandLogin) ([]comby.Event, error)
AccountCommandLoginOAuth
Domain Command Struct:
type AccountCommandLoginOAuth struct {
AccountUuid string `json:"accountUuid"`
Email string `json:"email,omitempty"`
NewPassword string `json:"newPassword,omitempty"`
SessionUuid string `json:"sessionUuid"`
SessionKey string `json:"sessionKey"`
Attributes *comby.AttributeMap `json:"attributes,omitempty"`
}
Domain Command Handling Method:
func (ch *commandHandler) AccountCommandLoginOAuth(ctx context.Context, cmd comby.Command, domainCmd *AccountCommandLoginOAuth) ([]comby.Event, error)
AccountCommandLogout
AccountCommandLogout handles logging out of a user account or session, with strict access control to ensure security and proper authorization.
This command enforces the following rules:
- Self-Logout:
- A user can log out their own account or session.
- This ensures users have full control over their own sessions while preventing unauthorized access to other accounts.
- System Tenant Authorization:
- Only the system tenant is permitted to log out other users or their sessions.
- This restriction ensures that account-wide or cross-tenant session management is tightly controlled and limited to system-level administrators.
Domain Command Struct:
type AccountCommandLogout struct {
AccountUuid string `json:"accountUuid,omitempty"`
SessionUuid string `json:"sessionUuid,omitempty"`
}
Domain Command Handling Method:
func (ch *commandHandler) AccountCommandLogout(ctx context.Context, cmd comby.Command, domainCmd *AccountCommandLogout) ([]comby.Event, error)
AccountCommandRegister
Domain Command Struct:
type AccountCommandRegister struct {
AccountUuid string `json:"accountUuid"`
InvitationToken string `json:"invitationToken"`
Email string `json:"email"`
Password string `json:"password"`
}
Domain Command Handling Method:
func (ch *commandHandler) AccountCommandRegister(ctx context.Context, cmd comby.Command, domainCmd *AccountCommandRegister) ([]comby.Event, error)
AccountCommandRemove
AccountCommandRemove handles the deletion of accounts, with strict rules to ensure proper access control.
This command enforces the following restrictions:
- Self-Deletion Prohibited:
- A user cannot delete their own account under any circumstances. This ensures a safeguard against accidental or unauthorized self-deletion.
- System Tenant Authorization:
- Only system tenants are permitted to delete accounts belonging to other users or tenants.
- This restriction ensures that account deletion is controlled centrally and prevents unauthorized cross-tenant modifications.
Domain Command Struct:
type AccountCommandRemove struct {
AccountUuid string `json:"accountUuid"`
}
Domain Command Handling Method:
func (ch *commandHandler) AccountCommandRemove(ctx context.Context, cmd comby.Command, domainCmd *AccountCommandRemove) ([]comby.Event, error)
AccountCommandRequestPasswordReset
Domain Command Struct:
type AccountCommandRequestPasswordReset struct {
Email string `json:"email"`
}
Domain Command Handling Method:
func (ch *commandHandler) AccountCommandRequestPasswordReset(ctx context.Context, cmd comby.Command, domainCmd *AccountCommandRequestPasswordReset) ([]comby.Event, error)
AccountCommandSetAttributes
Domain Command Struct:
type AccountCommandSetAttributes struct {
AccountUuid string `json:"accountUuid"`
Attributes *comby.AttributeMap `json:"attributes"`
}
Domain Command Handling Method:
func (ch *commandHandler) AccountCommandSetAttributes(ctx context.Context, cmd comby.Command, domainCmd *AccountCommandSetAttributes) ([]comby.Event, error)
AccountCommandUpdateCredentials
AccountCommandUpdateCredentials handles updating the credentials (email and password) of an account, with strict access control to ensure security and proper authorization.
This command enforces the following rules:
- Self-Account Update:
- A user can only update the credentials of their own account.
- This restriction ensures users cannot modify the credentials of other accounts, maintaining strict isolation.
- System Tenant Administrator Override:
- The system tenant administrator is allowed to update credentials for any account.
- This provides a controlled mechanism for administrative recovery or management of user credentials.
Domain Command Struct:
type AccountCommandUpdateCredentials struct {
AccountUuid string `json:"accountUuid"`
Email string `json:"email"`
Password string `json:"password"`
}
Domain Command Handling Method:
func (ch *commandHandler) AccountCommandUpdateCredentials(ctx context.Context, cmd comby.Command, domainCmd *AccountCommandUpdateCredentials) ([]comby.Event, error)
AccountCommandUpdateState
Domain Command Struct:
type AccountCommandUpdateState struct {
AccountUuid string `json:"accountUuid"`
State string `json:"state"`
}
Domain Command Handling Method:
func (ch *commandHandler) AccountCommandUpdateState(ctx context.Context, cmd comby.Command, domainCmd *AccountCommandUpdateState) ([]comby.Event, error)
Queries
Domain Query Structs:
- AccountQueryList
- AccountQueryModelByEmail
- AccountQueryModelEmailPassword
- AccountQueryModel
- AccountQueryModelOneTimeToken
- AccountQueryModelSessionKey
Domain Query Responses:
AccountQueryList
AccountQueryList returns a list of accounts based on the context of the requestor.
This query exhibits unique behavior, as its results vary depending on the context of the requesting entity. Specifically, the query's outcome can be classified into three distinct cases:
- System Tenant Context:
- When the requestor represents the system tenant, the query retrieves all accounts.
- This includes not only the accounts directly tied to the system tenant but also any identities belonging to other tenants.
- This behavior ensures that the system tenant maintains global visibility across all tenant identities.
- Specific Tenant Context:
- If the requestor represents a specific tenant, the query returns all accounts associated with that tenant.
- Importantly, it excludes accounts or identities that are linked to other tenants.
- This ensures that a tenant's view remains isolated, adhering to a strict multi-tenancy principle.
- Equal Sender and Target Context:
- In cases where an account requests the list of accounts, the query returns only the requesting account itself.
- This includes all identities associated with the requesting account, regardless of their tenant.
- This behavior ensures that the account sees only its own information while maintaining visibility into all related identities.
Domain Query Struct:
type AccountQueryList struct {
Page int64 `json:"page,omitempty"`
PageSize int64 `json:"pageSize,omitempty"`
OrderBy string `json:"orderBy,omitempty"`
}
Domain Query Handling Method:
func (qh *queryHandler) AccountQueryList(ctx context.Context, qry comby.Query, domainQry *AccountQueryList) (*AccountQueryListResponse, error)
AccountQueryModelByEmail
Domain Query Struct:
type AccountQueryModelByEmail struct {
Email string `json:"email"`
}
Domain Query Handling Method:
func (qh *queryHandler) AccountQueryModelByEmail(ctx context.Context, qry comby.Query, domainQry *AccountQueryModelByEmail) (*AccountQueryItemResponse, error)
AccountQueryModelEmailPassword
Domain Query Struct:
type AccountQueryModelEmailPassword struct {
Email string `json:"email"`
Password string `json:"password"`
IncludeLastSession bool `json:"includeLastSession,omitempty"`
IncludeAllSessions bool `json:"includeAllSessions,omitempty"`
}
Domain Query Handling Method:
func (qh *queryHandler) AccountQueryModelEmailPassword(ctx context.Context, qry comby.Query, domainQry *AccountQueryModelEmailPassword) (*AccountQueryItemResponse, error)
AccountQueryModel
Domain Query Struct:
type AccountQueryModel struct {
AccountUuid string `json:"accountUuid"`
}
Domain Query Handling Method:
func (qh *queryHandler) AccountQueryModel(ctx context.Context, qry comby.Query, domainQry *AccountQueryModel) (*AccountQueryItemResponse, error)
AccountQueryModelOneTimeToken
Domain Query Struct:
type AccountQueryModelOneTimeToken struct {
OneTimeToken string `json:"ott"`
}
Domain Query Handling Method:
func (qh *queryHandler) AccountQueryModelOneTimeToken(ctx context.Context, qry comby.Query, domainQry *AccountQueryModelOneTimeToken) (*AccountQueryItemResponse, error)
AccountQueryModelSessionKey
Domain Query Struct:
type AccountQueryModelSessionKey struct {
SessionKey string `json:"sessionKey"`
}
Domain Query Handling Method:
func (qh *queryHandler) AccountQueryModelSessionKey(ctx context.Context, qry comby.Query, domainQry *AccountQueryModelSessionKey) (*AccountQueryItemResponse, error)
AccountQueryListResponse
type AccountQueryListResponse struct {
Items []*readmodel.AccountModel `json:"items,omitempty"`
Total int64 `json:"total,omitempty"`
Page int64 `json:"page,omitempty"`
PageSize int64 `json:"pageSize,omitempty"`
}
AccountQueryItemResponse
type AccountQueryItemResponse struct {
Item *readmodel.AccountModel `json:"item,omitempty"`
}
Events
- AccountPasswordChangedEvent
- AccountPasswordResetConfirmedEvent
- AccountRegisterConfirmedEvent
- AccountAttributesDeletedEvent
- AccountLoggedInEvent
- AccountLoggedOutEvent
- AccountRegisteredEvent
- AccountRemovedEvent
- AccountPasswordResetRequestedEvent
- AccountAttributesSetEvent
- AccountCredentialsUpdatedEvent
- AccountOneTimeTokenUpdatedEvent
- AccountStateUpdatedEvent
AccountPasswordChangedEvent
AccountPasswordChangedEvent is an domain event that is triggered when the password of an account has changed.
Domain Event Struct:
type AccountPasswordChangedEvent struct {
AccountUuid string `json:"accountUuid"` // Unique identifier of the account.
NewHashedPassword string `json:"newHashedPassword"` // The new hashed password for the account.
}
Domain Event Handling Method:
func (agg *Account) AccountPasswordChangedEvent(ctx context.Context, evt comby.Event, domainEvt *AccountPasswordChangedEvent) (error)
AccountPasswordResetConfirmedEvent
Domain Event Struct:
type AccountPasswordResetConfirmedEvent struct {
AccountUuid string `json:"accountUuid"`
NewHashedPassword string `json:"newHashedPassword"`
State string `json:"state"`
}
Domain Event Handling Method:
func (agg *Account) AccountPasswordResetConfirmedEvent(ctx context.Context, evt comby.Event, domainEvt *AccountPasswordResetConfirmedEvent) (error)
AccountRegisterConfirmedEvent
Domain Event Struct:
type AccountRegisterConfirmedEvent struct {
AccountUuid string `json:"accountUuid"`
State string `json:"state"`
}
Domain Event Handling Method:
func (agg *Account) AccountRegisterConfirmedEvent(ctx context.Context, evt comby.Event, domainEvt *AccountRegisterConfirmedEvent) (error)
AccountAttributesDeletedEvent
Domain Event Struct:
type AccountAttributesDeletedEvent struct {
AccountUuid string `json:"accountUuid"`
AttributeKeys []string `json:"attributeKeys"`
}
Domain Event Handling Method:
func (agg *Account) AccountAttributesDeletedEvent(ctx context.Context, evt comby.Event, domainEvt *AccountAttributesDeletedEvent) (error)
AccountLoggedInEvent
Domain Event Struct:
type AccountLoggedInEvent struct {
AccountUuid string `json:"accountUuid"`
SessionUuid string `json:"sessionUuid"`
SessionKey string `json:"sessionKey"`
ExpiredAt int64 `json:"expiredAt"`
}
Domain Event Handling Method:
func (agg *Account) AccountLoggedInEvent(ctx context.Context, evt comby.Event, domainEvt *AccountLoggedInEvent) (error)
AccountLoggedOutEvent
Domain Event Struct:
type AccountLoggedOutEvent struct {
AccountUuid string `json:"accountUuid"`
SessionUuid string `json:"sessionUuid"`
}
Domain Event Handling Method:
func (agg *Account) AccountLoggedOutEvent(ctx context.Context, evt comby.Event, domainEvt *AccountLoggedOutEvent) (error)
AccountRegisteredEvent
Domain Event Struct:
type AccountRegisteredEvent struct {
AccountUuid string `json:"accountUuid"`
State string `json:"state,omitempty"`
}
Domain Event Handling Method:
func (agg *Account) AccountRegisteredEvent(ctx context.Context, evt comby.Event, domainEvt *AccountRegisteredEvent) (error)
AccountRemovedEvent
Domain Event Struct:
type AccountRemovedEvent struct {
AccountUuid string `json:"accountUuid"`
State string `json:"state,omitempty"`
}
Domain Event Handling Method:
func (agg *Account) AccountRemovedEvent(ctx context.Context, evt comby.Event, domainEvt *AccountRemovedEvent) (error)
AccountPasswordResetRequestedEvent
Domain Event Struct:
type AccountPasswordResetRequestedEvent struct {
AccountUuid string `json:"accountUuid"`
Code string `json:"code"`
}
Domain Event Handling Method:
func (agg *Account) AccountPasswordResetRequestedEvent(ctx context.Context, evt comby.Event, domainEvt *AccountPasswordResetRequestedEvent) (error)
AccountAttributesSetEvent
Domain Event Struct:
type AccountAttributesSetEvent struct {
AccountUuid string `json:"accountUuid"`
Attributes *comby.AttributeMap `json:"attributes,omitempty"`
}
Domain Event Handling Method:
func (agg *Account) AccountAttributesSetEvent(ctx context.Context, evt comby.Event, domainEvt *AccountAttributesSetEvent) (error)
AccountCredentialsUpdatedEvent
Domain Event Struct:
type AccountCredentialsUpdatedEvent struct {
AccountUuid string `json:"accountUuid"`
Email string `json:"email,omitempty"`
Password string `json:"password,omitempty"`
}
Domain Event Handling Method:
func (agg *Account) AccountCredentialsUpdatedEvent(ctx context.Context, evt comby.Event, domainEvt *AccountCredentialsUpdatedEvent) (error)
AccountOneTimeTokenUpdatedEvent
Domain Event Struct:
type AccountOneTimeTokenUpdatedEvent struct {
AccountUuid string `json:"accountUuid"`
Key string `json:"key"`
ExpiredAt int64 `json:"expiredAt"`
}
Domain Event Handling Method:
func (agg *Account) AccountOneTimeTokenUpdatedEvent(ctx context.Context, evt comby.Event, domainEvt *AccountOneTimeTokenUpdatedEvent) (error)
AccountStateUpdatedEvent
Domain Event Struct:
type AccountStateUpdatedEvent struct {
AccountUuid string `json:"accountUuid"`
State string `json:"state"`
}
Domain Event Handling Method:
func (agg *Account) AccountStateUpdatedEvent(ctx context.Context, evt comby.Event, domainEvt *AccountStateUpdatedEvent) (error)
Aggregate
Account represents the root aggregate for managing authentication and session handling.
- Credentials: Attributes for email, password, and the next allowed login time.
- OneTimeToken: Single-use tokens with attributes for the key, type, and expiration time.
- Session: Details about active user sessions, including a unique session UUID, session key, and expiration time.
Aggregate Struct:
type Account struct {
*comby.BaseAggregate
// Entities
Credentials *Credentials
OneTimeToken *OneTimeToken
Sessions []*Session
// Value Objects
Attributes *comby.AttributeMap
State string
}
Methods
- ChangePassword
- ConfirmPasswordReset
- ConfirmRegister
- DeleteAttributes
- Login
- Logout
- LogoutSession
- Register
- Remove
- RequestPasswordReset
- SetAttributes
- UpdateCredentials
- UpdateOneTimeToken
- UpdateState
ChangePassword
func (agg *Account) ChangePassword(passwordCurrent, newPassword string) (error)
ConfirmPasswordReset
func (agg *Account) ConfirmPasswordReset(oneTimeToken, newPassword string) (error)
ConfirmRegister
func (agg *Account) ConfirmRegister(oneTimeToken string) (error)
DeleteAttributes
func (agg *Account) DeleteAttributes(attributeKeys []string) (error)
Login
func (agg *Account) Login(email, password, sessionUuid, sessionKey string) (error)
Logout
func (agg *Account) Logout() (error)
LogoutSession
func (agg *Account) LogoutSession(sessionUuid string) (error)
Register
func (agg *Account) Register(email, password, state string) (error)
Remove
func (agg *Account) Remove() (error)
RequestPasswordReset
func (agg *Account) RequestPasswordReset() (error)
SetAttributes
func (agg *Account) SetAttributes(attributes *comby.AttributeMap) (error)
UpdateCredentials
func (agg *Account) UpdateCredentials(email, password string) (error)
UpdateOneTimeToken
func (agg *Account) UpdateOneTimeToken(key string, expiredAt int64) (error)
UpdateState
func (agg *Account) UpdateState(state string) (error)
Event Handlers
Reactor
Domain Event | Method |
---|---|
aggregate.AccountPasswordResetRequestedEvent | AccountPasswordResetRequestedEvent |
AccountReadmodel
Domain Event | Method |
---|---|
tenantAggregate.TenantAttributesSetEvent | TenantAttributesSetEvent |
tenantAggregate.TenantUpdatedEvent | TenantUpdatedEvent |
tenantAggregate.TenantRemovedEvent | TenantRemovedEvent |
tenantAggregate.TenantCreatedEvent | TenantCreatedEvent |
identityAggregate.IdentityRemovedEvent | IdentityRemovedEvent |
identityAggregate.IdentityProfileUpdatedEvent | IdentityProfileUpdatedEvent |
identityAggregate.IdentityAddedGroupEvent | IdentityAddedGroupEvent |
identityAggregate.IdentityCreatedEvent | IdentityCreatedEvent |
groupAggregate.GroupAddedEvent | GroupAddedEvent |
groupAggregate.GroupRemovedEvent | GroupRemovedEvent |
groupAggregate.GroupUpdatedEvent | GroupUpdatedEvent |
accountAggregate.AccountCredentialsUpdatedEvent | AccountCredentialsUpdatedEvent |
accountAggregate.AccountStateUpdatedEvent | AccountStateUpdatedEvent |
accountAggregate.AccountAttributesDeletedEvent | AccountAttributesDeletedEvent |
accountAggregate.AccountAttributesSetEvent | AccountAttributesSetEvent |
accountAggregate.AccountLoggedOutEvent | AccountLoggedOutEvent |
accountAggregate.AccountLoggedInEvent | AccountLoggedInEvent |
accountAggregate.AccountOneTimeTokenUpdatedEvent | AccountOneTimeTokenUpdatedEvent |
accountAggregate.AccountRegisteredEvent | AccountRegisteredEvent |
accountAggregate.AccountRemovedEvent | AccountRemovedEvent |
accountAggregate.AccountPasswordResetConfirmedEvent | AccountPasswordResetConfirmedEvent |
accountAggregate.AccountPasswordResetRequestedEvent | AccountPasswordResetRequestedEvent |
accountAggregate.AccountPasswordChangedEvent | AccountPasswordChangedEvent |
accountAggregate.AccountRegisterConfirmedEvent | AccountRegisterConfirmedEvent |
Custom Permissions
Name | Type | Comment |
---|---|---|
AccountCommandActivate | Command | Activate an existing account |
AccountCommandChangePassword | Command | Change password of an existing account |
AccountCommandConfirmPasswordReset | Command | Confirm password reset of an existing account |
AccountCommandConfirmRegister | Command | Confirm registration of an new account |
AccountCommandCreate | Command | Create new account manually |
AccountCommandLoginOAuth | Command | Login into an existing account using OAuth |
AccountCommandLogin | Command | Login into an existing account |
AccountCommandLogout | Command | Logout an account |
AccountCommandRegister | Command | Register new account |
AccountCommandRemove | Command | Remove existing account |
AccountCommandUpdateCredentials | Command | Update credentials of an existing account |
AccountCommandSetAttributes | Command | Update attributes of an existing account |
AccountCommandDeleteAttributes | Command | Delete attributes of an existing account |
AccountCommandUpdateState | Command | Update state of an existing account |
AccountQueryModelSessionKey | Query | Request account details by session key |
AccountQueryModelOneTimeToken | Query | Request account details by one time password |
AccountQueryModelEmailPassword | Query | Request account details by email and password |
AccountQueryModel | Query | Request account details |
Asset
Commands
AssetCommandUpdate
Domain Command Struct:
type AssetCommandUpdate struct {
IdentityUuid string `json:"identityUuid"`
AssetUuid string `json:"assetUuid"`
AssetName string `json:"assetName,omitempty"`
AssetSize int64 `json:"assetSize,omitempty"`
AssetContentType string `json:"assetContentType,omitempty"`
Tags []string `json:"tags,omitempty"`
Public bool `json:"public,omitempty"`
PatchedFields []string `json:"patchedFields"`
}
Domain Command Handling Method:
func (cs *commandService) AssetCommandUpdate(ctx context.Context, cmd comby.Command, domainCmd *AssetCommandUpdate) ([]comby.Event, error)
AssetCommandAdd
Domain Command Struct:
type AssetCommandAdd struct {
AssetUuid string `json:"assetUuid"`
IdentityUuid string `json:"identityUuid,omitempty"`
AssetName string `json:"assetName,omitempty"`
AssetSize int64 `json:"assetSize,omitempty"`
AssetContentType string `json:"assetContentType,omitempty"`
Tags []string `json:"tags,omitempty"`
Public bool `json:"public,omitempty"`
}
Domain Command Handling Method:
func (cs *commandService) AssetCommandAdd(ctx context.Context, cmd comby.Command, domainCmd *AssetCommandAdd) ([]comby.Event, error)
AssetCommandRemove
Domain Command Struct:
type AssetCommandRemove struct {
AssetUuid string `json:"assetUuid"`
}
Domain Command Handling Method:
func (cs *commandService) AssetCommandRemove(ctx context.Context, cmd comby.Command, domainCmd *AssetCommandRemove) ([]comby.Event, error)
AssetCommandSetAttributes
Domain Command Struct:
type AssetCommandSetAttributes struct {
AssetUuid string `json:"assetUuid"`
Attributes *comby.AttributeMap `json:"attributes"`
}
Domain Command Handling Method:
func (cs *commandService) AssetCommandSetAttributes(ctx context.Context, cmd comby.Command, domainCmd *AssetCommandSetAttributes) ([]comby.Event, error)
Queries
Domain Query Structs:
Domain Query Responses:
AssetQueryDownload
Domain Query Struct:
type AssetQueryDownload struct {
AssetUuid string `json:"assetUuid"`
}
Domain Query Handling Method:
func (qs *queryService) AssetQueryDownload(ctx context.Context, qry comby.Query, domainQry *AssetQueryDownload) (*AssetQueryItemResponse, error)
AssetQueryList
Domain Query Struct:
type AssetQueryList struct {
TenantUuid string `json:"tenantUuid"`
Page int64 `json:"page,omitempty"`
PageSize int64 `json:"pageSize,omitempty"`
OrderBy string `json:"orderBy,omitempty"`
Tags []string `json:"tags,omitempty"`
}
Domain Query Handling Method:
func (qs *queryService) AssetQueryList(ctx context.Context, qry comby.Query, domainQry *AssetQueryList) (*AssetQueryListResponse, error)
AssetQueryModelByBucketObject
Domain Query Struct:
type AssetQueryModelByBucketObject struct {
BucketName string `json:"bucketName"`
ObjectName string `json:"objectName"`
}
Domain Query Handling Method:
func (qs *queryService) AssetQueryModelByBucketObject(ctx context.Context, qry comby.Query, domainQry *AssetQueryModelByBucketObject) (*AssetQueryItemResponse, error)
AssetQueryModel
Domain Query Struct:
type AssetQueryModel struct {
AssetUuid string `json:"assetUuid"`
}
Domain Query Handling Method:
func (qs *queryService) AssetQueryModel(ctx context.Context, qry comby.Query, domainQry *AssetQueryModel) (*AssetQueryItemResponse, error)
AssetQueryItemResponse
type AssetQueryItemResponse struct {
Item *readmodel.AssetModel `json:"item,omitempty"`
}
AssetQueryListResponse
type AssetQueryListResponse struct {
Items []*readmodel.AssetModel `json:"items,omitempty"`
Total int64 `json:"total,omitempty"`
Page int64 `json:"page,omitempty"`
PageSize int64 `json:"pageSize,omitempty"`
}
Events
AssetAddedEvent
Domain Event Struct:
type AssetAddedEvent struct {
AssetUuid string `json:"assetUuid"`
IdentityUuid string `json:"identityUuid,omitempty"`
AssetName string `json:"assetName,omitempty"`
AssetSize int64 `json:"assetSize,omitempty"`
AssetContentType string `json:"assetContentType,omitempty"`
BucketName string `json:"bucketName,omitempty"`
ObjectName string `json:"objectName,omitempty"`
Tags []string `json:"tags,omitempty"`
Public bool `json:"public,omitempty"`
}
Domain Event Handling Method:
func (agg *Asset) AssetAddedEvent(ctx context.Context, evt comby.Event, domainEvt *AssetAddedEvent) (error)
AssetRemovedEvent
Domain Event Struct:
type AssetRemovedEvent struct {
AssetUuid string `json:"assetUuid"`
}
Domain Event Handling Method:
func (agg *Asset) AssetRemovedEvent(ctx context.Context, evt comby.Event, domainEvt *AssetRemovedEvent) (error)
AssetAttributesSetEvent
Domain Event Struct:
type AssetAttributesSetEvent struct {
AssetUuid string `json:"assetUuid"`
Attributes *comby.AttributeMap `json:"attributes,omitempty"`
}
Domain Event Handling Method:
func (agg *Asset) AssetAttributesSetEvent(ctx context.Context, evt comby.Event, domainEvt *AssetAttributesSetEvent) (error)
AssetUpdatedEvent
Domain Event Struct:
type AssetUpdatedEvent struct {
AssetUuid string `json:"assetUuid"`
IdentityUuid string `json:"identityUuid,omitempty"`
AssetName string `json:"assetName,omitempty"`
AssetSize int64 `json:"assetSize,omitempty"`
AssetContentType string `json:"assetContentType,omitempty"`
BucketName string `json:"bucketName,omitempty"`
ObjectName string `json:"objectName,omitempty"`
Tags []string `json:"tags,omitempty"`
Public bool `json:"public,omitempty"`
}
Domain Event Handling Method:
func (agg *Asset) AssetUpdatedEvent(ctx context.Context, evt comby.Event, domainEvt *AssetUpdatedEvent) (error)
Aggregate
Aggregate Struct:
type Asset struct {
*comby.BaseAggregate
// References
IdentityUuid string
// Value Objects (asset)
Name string
Size int64
ContentType string
Path string
// Value Objects (storage)
BucketName string
ObjectName string
Tags []string
Public bool
Attributes *comby.AttributeMap
}
Methods
Add
func (agg *Asset) Add(identityUuid, assetName string, assetSize int64, assetContentType, bucketName, objectName string, tags []string, public bool) (error)
Remove
func (agg *Asset) Remove() (error)
SetAttributes
func (agg *Asset) SetAttributes(attributes *comby.AttributeMap) (error)
Update
func (agg *Asset) Update(identityUuid, assetName string, assetSize int64, assetContentType, bucketName, objectName string, tags []string, public bool) (error)
Event Handlers
AssetReadmodel
Domain Event | Method |
---|---|
tenantAggregate.TenantCreatedEvent | TenantCreatedEvent |
tenantAggregate.TenantRemovedEvent | TenantRemovedEvent |
tenantAggregate.TenantUpdatedEvent | TenantUpdatedEvent |
identityAggregate.IdentityCreatedEvent | IdentityCreatedEvent |
identityAggregate.IdentityProfileUpdatedEvent | IdentityProfileUpdatedEvent |
identityAggregate.IdentityRemovedEvent | IdentityRemovedEvent |
assetAggregate.AssetAddedEvent | AssetAddedEvent |
assetAggregate.AssetUpdatedEvent | AssetUpdatedEvent |
assetAggregate.AssetRemovedEvent | AssetRemovedEvent |
assetAggregate.AssetAttributesSetEvent | AssetAttributesSetEvent |
Custom Permissions
Name | Type | Comment |
---|---|---|
AssetCommandAdd | Command | Create and upload asset |
AssetCommandRemove | Command | Remove existing asset |
AssetCommandUpdate | Command | Update existing asset |
AssetCommandSetAttributes | Command | Update attributes of existing asset |
AssetQueryDownload | Query | Download existing asset |
AssetQueryList | Query | List all assets |
AssetQueryModel | Query | Get asset |
AssetQueryModelByBucketObject | Query | Get asset by bucket and object name |
Auth
Commands
CommandWithoutTargetAggregate
Domain Command Struct:
type CommandWithoutTargetAggregate struct {
NewAggAUuid string `json:"newAggAUuid"`
Name string
}
Domain Command Handling Method:
func (cs *commandService) CommandHandlerWithoutTargetAggregateUuid(ctx context.Context, cmd comby.Command, domainCmd *CommandWithoutTargetAggregate) ([]comby.Event, error)
CommandWithTargetAggregate
Domain Command Struct:
type CommandWithTargetAggregate struct {
AggAUuid string `json:"aggAUuid"`
Name string
}
Domain Command Handling Method:
func (cs *commandService) CommandHandlerWithTargetAggregateUuid(ctx context.Context, cmd comby.Command, domainCmd *CommandWithTargetAggregate) ([]comby.Event, error)
Events
AggACreated
Domain Event Struct:
type AggACreated struct {
AggAUuid string `json:"aggAUuid"`
Other string `json:"other,omitempty"`
}
Domain Event Handling Method:
func (agg *AggA) AggACreated(ctx context.Context, evt comby.Event, domainEvt *AggACreated) (error)
AggAModified
Domain Event Struct:
type AggAModified struct {
AggAUuid string `json:"aggAUuid"`
Other string `json:"other,omitempty"`
}
Domain Event Handling Method:
func (agg *AggA) AggAModified(ctx context.Context, evt comby.Event, domainEvt *AggAModified) (error)
Aggregate
Aggregate Struct:
type AggA struct {
*comby.BaseAggregate
Other string
}
Methods
CreateAggA
func (agg *AggA) CreateAggA(other string) (error)
ModifyAggA
func (agg *AggA) ModifyAggA(other string) (error)
Event Handlers
AccountCtxReadmodel
Domain Event | Method |
---|---|
tenantAggregate.TenantRemovedEvent | TenantRemovedEvent |
tenantAggregate.TenantCreatedEvent | TenantCreatedEvent |
identityAggregate.IdentityRemovedGroupEvent | IdentityRemovedGroupEvent |
identityAggregate.IdentityAddedGroupEvent | IdentityAddedGroupEvent |
identityAggregate.IdentityRemovedTokenEvent | IdentityRemovedTokenEvent |
identityAggregate.IdentityAddedTokenEvent | IdentityAddedTokenEvent |
identityAggregate.IdentityRemovedEvent | IdentityRemovedEvent |
identityAggregate.IdentityCreatedEvent | IdentityCreatedEvent |
groupAggregate.GroupAddedEvent | GroupAddedEvent |
groupAggregate.GroupUpdatedEvent | GroupUpdatedEvent |
groupAggregate.GroupRemovedEvent | GroupRemovedEvent |
accountAggregate.AccountRemovedEvent | AccountRemovedEvent |
accountAggregate.AccountAttributesSetEvent | AccountAttributesSetEvent |
accountAggregate.AccountLoggedOutEvent | AccountLoggedOutEvent |
accountAggregate.AccountLoggedInEvent | AccountLoggedInEvent |
accountAggregate.AccountOneTimeTokenUpdatedEvent | AccountOneTimeTokenUpdatedEvent |
accountAggregate.AccountCredentialsUpdatedEvent | AccountCredentialsUpdatedEvent |
accountAggregate.AccountRegisteredEvent | AccountRegisteredEvent |
accountAggregate.AccountPasswordResetConfirmedEvent | AccountPasswordResetConfirmedEvent |
accountAggregate.AccountPasswordResetRequestedEvent | AccountPasswordResetRequestedEvent |
accountAggregate.AccountPasswordChangedEvent | AccountPasswordChangedEvent |
accountAggregate.AccountRegisterConfirmedEvent | AccountRegisterConfirmedEvent |
comby.AllDomainEvent | OnHandleEventForTenantAggregateTuples |
Custom Permissions
Name | Type | Comment |
---|---|---|
Command | CommandWithoutTargetAggregate | |
Command | CommandWithTargetAggregate |
Group
Commands
GroupCommandCreate
Domain Command Struct:
type GroupCommandCreate struct {
GroupUuid string `json:"groupUuid"`
Name string `json:"name"`
Description string `json:"description,omitempty"`
Permissions []string `json:"permissions,omitempty"`
}
Domain Command Handling Method:
func (cs *commandService) GroupCommandCreate(ctx context.Context, cmd comby.Command, domainCmd *GroupCommandCreate) ([]comby.Event, error)
GroupCommandRemove
Domain Command Struct:
type GroupCommandRemove struct {
GroupUuid string `json:"groupUuid"`
}
Domain Command Handling Method:
func (cs *commandService) GroupCommandRemove(ctx context.Context, cmd comby.Command, domainCmd *GroupCommandRemove) ([]comby.Event, error)
GroupCommandSetAttributes
Domain Command Struct:
type GroupCommandSetAttributes struct {
GroupUuid string `json:"groupUuid"`
Attributes *comby.AttributeMap `json:"attributes"`
}
Domain Command Handling Method:
func (cs *commandService) GroupCommandSetAttributes(ctx context.Context, cmd comby.Command, domainCmd *GroupCommandSetAttributes) ([]comby.Event, error)
GroupCommandUpdate
Domain Command Struct:
type GroupCommandUpdate struct {
GroupUuid string `json:"groupUuid"`
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
Permissions []string `json:"permissions,omitempty"`
PatchedFields []string `json:"patchedFields"`
}
Domain Command Handling Method:
func (cs *commandService) GroupCommandUpdate(ctx context.Context, cmd comby.Command, domainCmd *GroupCommandUpdate) ([]comby.Event, error)
Queries
Domain Query Structs:
Domain Query Responses:
GroupQueryList
Domain Query Struct:
type GroupQueryList struct {
TenantUuid string `json:"tenantUuid"`
Page int64 `json:"page,omitempty"`
PageSize int64 `json:"pageSize,omitempty"`
OrderBy string `json:"orderBy,omitempty"`
}
Domain Query Handling Method:
func (qs *queryService) GroupQueryList(ctx context.Context, qry comby.Query, domainQry *GroupQueryList) (*GroupQueryListResponse, error)
GroupQueryModelByName
Domain Query Struct:
type GroupQueryModelByName struct {
Name string `json:"name"`
}
Domain Query Handling Method:
func (qs *queryService) GroupQueryModelByName(ctx context.Context, qry comby.Query, domainQry *GroupQueryModelByName) (*GroupQueryItemResponse, error)
GroupQueryModel
Domain Query Struct:
type GroupQueryModel struct {
GroupUuid string `json:"groupUuid"`
}
Domain Query Handling Method:
func (qs *queryService) GroupQueryModel(ctx context.Context, qry comby.Query, domainQry *GroupQueryModel) (*GroupQueryItemResponse, error)
GroupQueryListResponse
type GroupQueryListResponse struct {
Items []*readmodel.GroupModel `json:"items,omitempty"`
Total int64 `json:"total,omitempty"`
Page int64 `json:"page,omitempty"`
PageSize int64 `json:"pageSize,omitempty"`
}
GroupQueryItemResponse
type GroupQueryItemResponse struct {
Item *readmodel.GroupModel `json:"item,omitempty"`
}
Events
GroupAddedEvent
Domain Event Struct:
type GroupAddedEvent struct {
GroupUuid string `json:"groupUuid"`
Name string `json:"name"`
Description string `json:"description,omitempty"`
Permissions []string `json:"permissions,omitempty"`
}
Domain Event Handling Method:
func (agg *Group) GroupAddedEvent(ctx context.Context, evt comby.Event, domainEvt *GroupAddedEvent) (error)
GroupRemovedEvent
Domain Event Struct:
type GroupRemovedEvent struct {
GroupUuid string `json:"groupUuid"`
}
Domain Event Handling Method:
func (agg *Group) GroupRemovedEvent(ctx context.Context, evt comby.Event, domainEvt *GroupRemovedEvent) (error)
GroupAttributesSetEvent
Domain Event Struct:
type GroupAttributesSetEvent struct {
GroupUuid string `json:"groupUuid"`
Attributes *comby.AttributeMap `json:"attributes,omitempty"`
}
Domain Event Handling Method:
func (agg *Group) GroupAttributesSetEvent(ctx context.Context, evt comby.Event, domainEvt *GroupAttributesSetEvent) (error)
GroupUpdatedEvent
Domain Event Struct:
type GroupUpdatedEvent struct {
GroupUuid string `json:"groupUuid"`
Name string `json:"name"`
Description string `json:"description"`
Permissions []string `json:"permissions,omitempty"`
}
Domain Event Handling Method:
func (agg *Group) GroupUpdatedEvent(ctx context.Context, evt comby.Event, domainEvt *GroupUpdatedEvent) (error)
Aggregate
Aggregate Struct:
type Group struct {
*comby.BaseAggregate
// Value Objects
Permissions []string
Name string
Description string
Attributes *comby.AttributeMap
}
Methods
Add
func (agg *Group) Add(name, description string, permissions []string) (error)
Remove
func (agg *Group) Remove() (error)
SetAttributes
func (agg *Group) SetAttributes(attributes *comby.AttributeMap) (error)
Update
func (agg *Group) Update(name, description string, permissions []string) (error)
Event Handlers
GroupReadmodel
Domain Event | Method |
---|---|
tenantAggregate.TenantCreatedEvent | TenantCreatedEvent |
tenantAggregate.TenantRemovedEvent | TenantRemovedEvent |
tenantAggregate.TenantUpdatedEvent | TenantUpdatedEvent |
groupAggregate.GroupAddedEvent | GroupAddedEvent |
groupAggregate.GroupUpdatedEvent | GroupUpdatedEvent |
groupAggregate.GroupRemovedEvent | GroupRemovedEvent |
groupAggregate.GroupAttributesSetEvent | GroupAttributesSetEvent |
Custom Permissions
Name | Type | Comment |
---|---|---|
GroupCommandCreate | Command | Create new group |
GroupCommandUpdate | Command | Update existing group |
GroupCommandRemove | Command | Remove existing group |
GroupCommandSetAttributes | Command | Update additionals of existing group |
GroupQueryList | Query | List groups |
GroupQueryModel | Query | Get group by id |
GroupQueryModelByName | Query | Get group by name |
Identity
Commands
- IdentityCommandAddGroup
- IdentityCommandAddToken
- IdentityCommandCreate
- IdentityCommandRemove
- IdentityCommandRemoveGroup
- IdentityCommandRemoveToken
- IdentityCommandSetAttributes
- IdentityCommandUpdateProfile
IdentityCommandAddGroup
Domain Command Struct:
type IdentityCommandAddGroup struct {
IdentityUuid string `json:"identityUuid"`
GroupUuid string `json:"groupUuid"`
}
Domain Command Handling Method:
func (cs *commandService) IdentityCommandAddGroup(ctx context.Context, cmd comby.Command, domainCmd *IdentityCommandAddGroup) ([]comby.Event, error)
IdentityCommandAddToken
Domain Command Struct:
type IdentityCommandAddToken struct {
IdentityUuid string `json:"identityUuid"`
TokenUuid string `json:"tokenUuid"`
TokenValue string `json:"tokenValue"`
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
ExpiredAt int64 `json:"expiredAt,omitempty"`
}
Domain Command Handling Method:
func (cs *commandService) IdentityCommandAddToken(ctx context.Context, cmd comby.Command, domainCmd *IdentityCommandAddToken) ([]comby.Event, error)
IdentityCommandCreate
Domain Command Struct:
type IdentityCommandCreate struct {
IdentityUuid string `json:"identityUuid"`
AccountUuid string `json:"accountUuid,omitempty"`
GroupUuids []string `json:"groupUuids"`
}
Domain Command Handling Method:
func (cs *commandService) IdentityCommandCreate(ctx context.Context, cmd comby.Command, domainCmd *IdentityCommandCreate) ([]comby.Event, error)
IdentityCommandRemove
Domain Command Struct:
type IdentityCommandRemove struct {
IdentityUuid string `json:"identityUuid"`
}
Domain Command Handling Method:
func (cs *commandService) IdentityCommandRemove(ctx context.Context, cmd comby.Command, domainCmd *IdentityCommandRemove) ([]comby.Event, error)
IdentityCommandRemoveGroup
Domain Command Struct:
type IdentityCommandRemoveGroup struct {
IdentityUuid string `json:"identityUuid"`
GroupUuid string `json:"groupUuid"`
}
Domain Command Handling Method:
func (cs *commandService) IdentityCommandRemoveGroup(ctx context.Context, cmd comby.Command, domainCmd *IdentityCommandRemoveGroup) ([]comby.Event, error)
IdentityCommandRemoveToken
Domain Command Struct:
type IdentityCommandRemoveToken struct {
IdentityUuid string `json:"identityUuid"`
TokenUuid string `json:"tokenUuid"`
}
Domain Command Handling Method:
func (cs *commandService) IdentityCommandRemoveToken(ctx context.Context, cmd comby.Command, domainCmd *IdentityCommandRemoveToken) ([]comby.Event, error)
IdentityCommandSetAttributes
Domain Command Struct:
type IdentityCommandSetAttributes struct {
IdentityUuid string `json:"identityUuid"`
Attributes *comby.AttributeMap `json:"attributes"`
}
Domain Command Handling Method:
func (cs *commandService) IdentityCommandSetAttributes(ctx context.Context, cmd comby.Command, domainCmd *IdentityCommandSetAttributes) ([]comby.Event, error)
IdentityCommandUpdateProfile
Domain Command Struct:
type IdentityCommandUpdateProfile struct {
IdentityUuid string `json:"identityUuid"`
Name string `json:"name,omitempty"`
Email string `json:"email,omitempty"`
Title string `json:"title,omitempty"`
Avatar string `json:"avatar,omitempty"`
PatchedFields []string `json:"patchedFields"`
}
Domain Command Handling Method:
func (cs *commandService) IdentityCommandUpdateProfile(ctx context.Context, cmd comby.Command, domainCmd *IdentityCommandUpdateProfile) ([]comby.Event, error)
Queries
Domain Query Structs:
- IdentityQueryListByAccountUuid
- IdentityQueryListByAccountTenantUuid
- IdentityQueryList
- IdentityQueryModel
- IdentityQueryModelIndependentOfOrganization
Domain Query Responses:
IdentityQueryListByAccountUuid
Domain Query Struct:
type IdentityQueryListByAccountUuid struct {
AccountUuid string `json:"accountUuid"`
Page int64 `json:"page,omitempty"`
PageSize int64 `json:"pageSize,omitempty"`
OrderBy string `json:"orderBy,omitempty"`
}
Domain Query Handling Method:
func (qs *queryService) IdentityQueryListByAccountUuid(ctx context.Context, qry comby.Query, domainQry *IdentityQueryListByAccountUuid) (*IdentityQueryListResponse, error)
IdentityQueryListByAccountTenantUuid
Domain Query Struct:
type IdentityQueryListByAccountTenantUuid struct {
TenantUuid string `json:"tenantUuid"`
AccountUuid string `json:"accountUuid"`
Page int64 `json:"page,omitempty"`
PageSize int64 `json:"pageSize,omitempty"`
OrderBy string `json:"orderBy,omitempty"`
}
Domain Query Handling Method:
func (qs *queryService) IdentityQueryListByAccountTenantUuid(ctx context.Context, qry comby.Query, domainQry *IdentityQueryListByAccountTenantUuid) (*IdentityQueryListResponse, error)
IdentityQueryList
Domain Query Struct:
type IdentityQueryList struct {
TenantUuid string `json:"tenantUuid"`
Page int64 `json:"page,omitempty"`
PageSize int64 `json:"pageSize,omitempty"`
OrderBy string `json:"orderBy,omitempty"`
}
Domain Query Handling Method:
func (qs *queryService) IdentityQueryList(ctx context.Context, qry comby.Query, domainQry *IdentityQueryList) (*IdentityQueryListResponse, error)
IdentityQueryModel
Domain Query Struct:
type IdentityQueryModel struct {
IdentityUuid string `json:"identityUuid"`
}
Domain Query Handling Method:
func (qs *queryService) IdentityQueryModel(ctx context.Context, qry comby.Query, domainQry *IdentityQueryModel) (*IdentityQueryItemResponse, error)
IdentityQueryModelIndependentOfOrganization
Domain Query Struct:
type IdentityQueryModelIndependentOfOrganization struct {
SessionUuid string `json:"sessionUuid"`
IdentityUuid string `json:"identityUuid,omitempty"`
}
Domain Query Handling Method:
func (qs *queryService) IdentityQueryModelIndependentOfOrganization(ctx context.Context, qry comby.Query, domainQry *IdentityQueryModelIndependentOfOrganization) (*IdentityQueryItemResponse, error)
IdentityQueryListResponse
type IdentityQueryListResponse struct {
Items []*readmodel.IdentityModel `json:"items,omitempty"`
Total int64 `json:"total,omitempty"`
Page int64 `json:"page,omitempty"`
PageSize int64 `json:"pageSize,omitempty"`
}
IdentityQueryItemResponse
type IdentityQueryItemResponse struct {
Item *readmodel.IdentityModel `json:"item,omitempty"`
}
Events
- IdentityAddedGroupEvent
- IdentityAddedTokenEvent
- IdentityCreatedEvent
- IdentityRemovedEvent
- IdentityRemovedGroupEvent
- IdentityRemovedTokenEvent
- IdentityAttributesSetEvent
- IdentityProfileUpdatedEvent
IdentityAddedGroupEvent
Domain Event Struct:
type IdentityAddedGroupEvent struct {
IdentityUuid string `json:"identityUuid"`
GroupUuid string `json:"groupUuid"`
}
Domain Event Handling Method:
func (agg *Identity) IdentityAddedGroupEvent(ctx context.Context, evt comby.Event, domainEvt *IdentityAddedGroupEvent) (error)
IdentityAddedTokenEvent
Domain Event Struct:
type IdentityAddedTokenEvent struct {
IdentityUuid string `json:"identityUuid"`
TokenUuid string `json:"tokenUuid"`
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
TokenValue string `json:"tokenValue"`
ExpiredAt int64 `json:"expiredAt,omitempty"`
}
Domain Event Handling Method:
func (agg *Identity) IdentityAddedTokenEvent(ctx context.Context, evt comby.Event, domainEvt *IdentityAddedTokenEvent) (error)
IdentityCreatedEvent
Domain Event Struct:
type IdentityCreatedEvent struct {
IdentityUuid string `json:"identityUuid"`
AccountUuid string `json:"accountUuid,omitempty"`
}
Domain Event Handling Method:
func (agg *Identity) IdentityCreatedEvent(ctx context.Context, evt comby.Event, domainEvt *IdentityCreatedEvent) (error)
IdentityRemovedEvent
Domain Event Struct:
type IdentityRemovedEvent struct {
IdentityUuid string `json:"identityUuid"`
}
Domain Event Handling Method:
func (agg *Identity) IdentityRemovedEvent(ctx context.Context, evt comby.Event, domainEvt *IdentityRemovedEvent) (error)
IdentityRemovedGroupEvent
Domain Event Struct:
type IdentityRemovedGroupEvent struct {
IdentityUuid string `json:"identityUuid"`
GroupUuid string `json:"groupUuid"`
}
Domain Event Handling Method:
func (agg *Identity) IdentityRemovedGroupEvent(ctx context.Context, evt comby.Event, domainEvt *IdentityRemovedGroupEvent) (error)
IdentityRemovedTokenEvent
Domain Event Struct:
type IdentityRemovedTokenEvent struct {
IdentityUuid string `json:"identityUuid"`
TokenUuid string `json:"tokenUuid"`
}
Domain Event Handling Method:
func (agg *Identity) IdentityRemovedTokenEvent(ctx context.Context, evt comby.Event, domainEvt *IdentityRemovedTokenEvent) (error)
IdentityAttributesSetEvent
Domain Event Struct:
type IdentityAttributesSetEvent struct {
IdentityUuid string `json:"identityUuid"`
Attributes *comby.AttributeMap `json:"attributes,omitempty"`
}
Domain Event Handling Method:
func (agg *Identity) IdentityAttributesSetEvent(ctx context.Context, evt comby.Event, domainEvt *IdentityAttributesSetEvent) (error)
IdentityProfileUpdatedEvent
Domain Event Struct:
type IdentityProfileUpdatedEvent struct {
IdentityUuid string `json:"identityUuid"`
Name string `json:"name,omitempty"`
Email string `json:"email,omitempty"`
Title string `json:"title,omitempty"`
Avatar string `json:"avatar,omitempty"`
}
Domain Event Handling Method:
func (agg *Identity) IdentityProfileUpdatedEvent(ctx context.Context, evt comby.Event, domainEvt *IdentityProfileUpdatedEvent) (error)
Aggregate
Aggregate Struct:
type Identity struct {
*comby.BaseAggregate
// References
AccountUuid string
GroupUuids []string
// Entities
Profile *Profile
Tokens []*Token
// Value Objects
Attributes *comby.AttributeMap
}
Methods
AddGroup
func (agg *Identity) AddGroup(groupUuid string) (error)
AddToken
func (agg *Identity) AddToken(tokenUuid, tokenValue, name, description string, expiredAt int64) (error)
Add
func (agg *Identity) Add(accountUuid string) (error)
Remove
func (agg *Identity) Remove() (error)
RemoveGroup
func (agg *Identity) RemoveGroup(groupUuid string) (error)
RemoveToken
func (agg *Identity) RemoveToken(tokenUuid string) (error)
SetAttributes
func (agg *Identity) SetAttributes(attributes *comby.AttributeMap) (error)
UpdateProfile
func (agg *Identity) UpdateProfile(name, email, title, avatar string) (error)
Event Handlers
IdentityReadmodel
Domain Event | Method |
---|---|
tenantAggregate.TenantCreatedEvent | TenantCreatedEvent |
tenantAggregate.TenantAttributesSetEvent | TenantAttributesSetEvent |
tenantAggregate.TenantUpdatedEvent | TenantUpdatedEvent |
tenantAggregate.TenantRemovedEvent | TenantRemovedEvent |
identityAggregate.IdentityProfileUpdatedEvent | IdentityProfileUpdatedEvent |
identityAggregate.IdentityRemovedTokenEvent | IdentityRemovedTokenEvent |
identityAggregate.IdentityCreatedEvent | IdentityCreatedEvent |
identityAggregate.IdentityRemovedEvent | IdentityRemovedEvent |
identityAggregate.IdentityAddedGroupEvent | IdentityAddedGroupEvent |
identityAggregate.IdentityRemovedGroupEvent | IdentityRemovedGroupEvent |
identityAggregate.IdentityAddedTokenEvent | IdentityAddedTokenEvent |
identityAggregate.IdentityAttributesSetEvent | IdentityAttributesSetEvent |
groupAggregate.GroupUpdatedEvent | GroupUpdatedEvent |
groupAggregate.GroupRemovedEvent | GroupRemovedEvent |
groupAggregate.GroupAddedEvent | GroupAddedEvent |
assetAggregate.AssetAddedEvent | AssetAddedEvent |
assetAggregate.AssetRemovedEvent | AssetRemovedEvent |
assetAggregate.AssetUpdatedEvent | AssetUpdatedEvent |
Invitation
Commands
- InvitationCommandAccept
- InvitationCommandCreate
- InvitationCommandDecline
- InvitationCommandRemove
- InvitationCommandSend
- InvitationCommandSetAttributes
InvitationCommandAccept
Domain Command Struct:
type InvitationCommandAccept struct {
InvitationUuid string `json:"invitationUuid"`
AccountUuid string `json:"accountUuid"`
Token string `json:"token"`
}
Domain Command Handling Method:
func (cs *commandService) InvitationCommandAccept(ctx context.Context, cmd comby.Command, domainCmd *InvitationCommandAccept) ([]comby.Event, error)
InvitationCommandCreate
Domain Command Struct:
type InvitationCommandCreate struct {
InvitationUuid string `json:"invitationUuid"`
IdentityUuid string `json:"identityUuid"`
GroupUuids []string `json:"groupUuids"`
Email string `json:"email"`
}
Domain Command Handling Method:
func (cs *commandService) InvitationCommandCreate(ctx context.Context, cmd comby.Command, domainCmd *InvitationCommandCreate) ([]comby.Event, error)
InvitationCommandDecline
Domain Command Struct:
type InvitationCommandDecline struct {
InvitationUuid string `json:"invitationUuid"`
AccountUuid string `json:"accountUuid"`
Token string `json:"token"`
}
Domain Command Handling Method:
func (cs *commandService) InvitationCommandDecline(ctx context.Context, cmd comby.Command, domainCmd *InvitationCommandDecline) ([]comby.Event, error)
InvitationCommandRemove
Domain Command Struct:
type InvitationCommandRemove struct {
InvitationUuid string `json:"invitationUuid"`
}
Domain Command Handling Method:
func (cs *commandService) InvitationCommandRemove(ctx context.Context, cmd comby.Command, domainCmd *InvitationCommandRemove) ([]comby.Event, error)
InvitationCommandSend
Domain Command Struct:
type InvitationCommandSend struct {
InvitationUuid string `json:"invitationUuid"`
}
Domain Command Handling Method:
func (cs *commandService) InvitationCommandSend(ctx context.Context, cmd comby.Command, domainCmd *InvitationCommandSend) ([]comby.Event, error)
InvitationCommandSetAttributes
Domain Command Struct:
type InvitationCommandSetAttributes struct {
InvitationUuid string `json:"invitationUuid"`
Attributes *comby.AttributeMap `json:"attributes"`
}
Domain Command Handling Method:
func (cs *commandService) InvitationCommandSetAttributes(ctx context.Context, cmd comby.Command, domainCmd *InvitationCommandSetAttributes) ([]comby.Event, error)
Queries
Domain Query Structs:
Domain Query Responses:
InvitationQueryList
Domain Query Struct:
type InvitationQueryList struct {
TenantUuid string `json:"tenantUuid"`
Page int64 `json:"page,omitempty"`
PageSize int64 `json:"pageSize,omitempty"`
OrderBy string `json:"orderBy,omitempty"`
}
Domain Query Handling Method:
func (qs *queryService) InvitationQueryList(ctx context.Context, qry comby.Query, domainQry *InvitationQueryList) (*InvitationQueryListResponse, error)
InvitationQueryModel
Domain Query Struct:
type InvitationQueryModel struct {
InvitationUuid string `json:"invitationUuid"`
}
Domain Query Handling Method:
func (qs *queryService) InvitationQueryModel(ctx context.Context, qry comby.Query, domainQry *InvitationQueryModel) (*InvitationQueryItemResponse, error)
InvitationQueryModelByInvitationToken
Domain Query Struct:
type InvitationQueryModelByInvitationToken struct {
InvitationToken string `json:"invitationToken"`
}
Domain Query Handling Method:
func (qs *queryService) InvitationQueryModelByInvitationToken(ctx context.Context, qry comby.Query, domainQry *InvitationQueryModelByInvitationToken) (*InvitationQueryItemResponse, error)
InvitationQueryListResponse
type InvitationQueryListResponse struct {
Items []*readmodel.InvitationModel `json:"items,omitempty"`
Total int64 `json:"total,omitempty"`
Page int64 `json:"page,omitempty"`
PageSize int64 `json:"pageSize,omitempty"`
}
InvitationQueryItemResponse
type InvitationQueryItemResponse struct {
Item *readmodel.InvitationModel `json:"item,omitempty"`
}
Events
- InvitationAcceptedEvent
- InvitationCreatedEvent
- InvitationDeclinedEvent
- InvitationRemovedEvent
- InvitationSentEvent
- InvitationAttributesSetEvent
InvitationAcceptedEvent
Domain Event Struct:
type InvitationAcceptedEvent struct {
InvitationUuid string `json:"invitationUuid"`
AccountUuid string `json:"accountUuid"`
}
Domain Event Handling Method:
func (agg *Invitation) InvitationAcceptedEvent(ctx context.Context, evt comby.Event, domainEvt *InvitationAcceptedEvent) (error)
InvitationCreatedEvent
Domain Event Struct:
type InvitationCreatedEvent struct {
InvitationUuid string `json:"invitationUuid"`
IdentityUuid string `json:"identityUuid"`
GroupUuids []string `json:"groupUuids"`
Token string `json:"token"`
Email string `json:"email"`
}
Domain Event Handling Method:
func (agg *Invitation) InvitationCreatedEvent(ctx context.Context, evt comby.Event, domainEvt *InvitationCreatedEvent) (error)
InvitationDeclinedEvent
Domain Event Struct:
type InvitationDeclinedEvent struct {
InvitationUuid string `json:"invitationUuid"`
AccountUuid string `json:"accountUuid"`
}
Domain Event Handling Method:
func (agg *Invitation) InvitationDeclinedEvent(ctx context.Context, evt comby.Event, domainEvt *InvitationDeclinedEvent) (error)
InvitationRemovedEvent
Domain Event Struct:
type InvitationRemovedEvent struct {
InvitationUuid string `json:"invitationUuid"`
}
Domain Event Handling Method:
func (agg *Invitation) InvitationRemovedEvent(ctx context.Context, evt comby.Event, domainEvt *InvitationRemovedEvent) (error)
InvitationSentEvent
Domain Event Struct:
type InvitationSentEvent struct {
InvitationUuid string `json:"invitationUuid"`
}
Domain Event Handling Method:
func (agg *Invitation) InvitationSentEvent(ctx context.Context, evt comby.Event, domainEvt *InvitationSentEvent) (error)
InvitationAttributesSetEvent
Domain Event Struct:
type InvitationAttributesSetEvent struct {
InvitationUuid string `json:"invitationUuid"`
Attributes *comby.AttributeMap `json:"attributes,omitempty"`
}
Domain Event Handling Method:
func (agg *Invitation) InvitationAttributesSetEvent(ctx context.Context, evt comby.Event, domainEvt *InvitationAttributesSetEvent) (error)
Aggregate
Aggregate Struct:
type Invitation struct {
*comby.BaseAggregate
// GroupUuids groups to which the invited account will be added
GroupUuids []string
// IdentityUuid who created the invitation
IdentityUuid string
// AccountUuid who accepted the invitation
AccountUuid string
// Value Objects
Token string
Email string
State string
Attributes *comby.AttributeMap
}
Methods
Accept
func (agg *Invitation) Accept(accountUuid string) (error)
Create
func (agg *Invitation) Create(identityUuid string, groupUuids []string, token, email string) (error)
Decline
func (agg *Invitation) Decline(accountUuid string) (error)
Remove
func (agg *Invitation) Remove() (error)
Send
func (agg *Invitation) Send() (error)
SetAttributes
func (agg *Invitation) SetAttributes(attributes *comby.AttributeMap) (error)
Event Handlers
Reactor
Domain Event | Method |
---|---|
aggregateInvitation.InvitationCreatedEvent | InvitationCreatedEvent |
aggregateInvitation.InvitationAcceptedEvent | InvitationAcceptedEvent |
InvitationReadmodel
Domain Event | Method |
---|---|
tenantAggregate.TenantCreatedEvent | TenantCreatedEvent |
tenantAggregate.TenantUpdatedEvent | TenantUpdatedEvent |
tenantAggregate.TenantRemovedEvent | TenantRemovedEvent |
invitationAggregate.InvitationAttributesSetEvent | InvitationAttributesSetEvent |
invitationAggregate.InvitationCreatedEvent | InvitationCreatedEvent |
invitationAggregate.InvitationRemovedEvent | InvitationRemovedEvent |
invitationAggregate.InvitationAcceptedEvent | InvitationAcceptedEvent |
invitationAggregate.InvitationDeclinedEvent | InvitationDeclinedEvent |
invitationAggregate.InvitationSentEvent | InvitationSentEvent |
identityAggregate.IdentityCreatedEvent | IdentityCreatedEvent |
identityAggregate.IdentityRemovedEvent | IdentityRemovedEvent |
identityAggregate.IdentityProfileUpdatedEvent | IdentityProfileUpdatedEvent |
groupAggregate.GroupUpdatedEvent | GroupUpdatedEvent |
groupAggregate.GroupRemovedEvent | GroupRemovedEvent |
groupAggregate.GroupAddedEvent | GroupAddedEvent |
accountAggregate.AccountCredentialsUpdatedEvent | AccountCredentialsUpdatedEvent |
Tenant
Commands
- TenantCommandCreate
- TenantCommandRemove
- TenantCommandSetSecret
- TenantCommandSetAttributes
- TenantCommandUpdate
TenantCommandCreate
Domain Command Struct:
type TenantCommandCreate struct {
TenantUuid string `json:"tenantUuid"`
Name string `json:"name"`
}
Domain Command Handling Method:
func (cs *commandService) TenantCommandCreate(ctx context.Context, cmd comby.Command, domainCmd *TenantCommandCreate) ([]comby.Event, error)
TenantCommandRemove
Domain Command Struct:
type TenantCommandRemove struct {
TenantUuid string `json:"tenantUuid"`
}
Domain Command Handling Method:
func (cs *commandService) TenantCommandRemove(ctx context.Context, cmd comby.Command, domainCmd *TenantCommandRemove) ([]comby.Event, error)
TenantCommandSetSecret
Domain Command Struct:
type TenantCommandSetSecret struct {
TenantUuid string `json:"tenantUuid"`
SecretKey string `json:"secretKey"`
SecretValue string `json:"secretValue,omitempty"`
}
Domain Command Handling Method:
func (cs *commandService) TenantCommandSetSecret(ctx context.Context, cmd comby.Command, domainCmd *TenantCommandSetSecret) ([]comby.Event, error)
TenantCommandSetAttributes
Domain Command Struct:
type TenantCommandSetAttributes struct {
TenantUuid string `json:"tenantUuid"`
Attributes *comby.AttributeMap `json:"attributes"`
}
Domain Command Handling Method:
func (cs *commandService) TenantCommandSetAttributes(ctx context.Context, cmd comby.Command, domainCmd *TenantCommandSetAttributes) ([]comby.Event, error)
TenantCommandUpdate
Domain Command Struct:
type TenantCommandUpdate struct {
TenantUuid string `json:"tenantUuid"`
Name string `json:"name,omitempty"`
PatchedFields []string `json:"patchedFields"`
}
Domain Command Handling Method:
func (cs *commandService) TenantCommandUpdate(ctx context.Context, cmd comby.Command, domainCmd *TenantCommandUpdate) ([]comby.Event, error)
Queries
Domain Query Structs:
Domain Query Responses:
TenantQueryList
TenantQueryList returns a list of tenants based on the context of the requestor.
This query determines the list of tenants a requestor is allowed to access, with behavior depending on the requestor's context. The query outcome is classified into two distinct cases:
- System Tenant Context:
- When the requestor represents the system tenant, the query retrieves a complete list of all tenants.
- This includes tenants from all contexts, providing global visibility for the system tenant.
- Specific Tenant Context:
- If the requestor represents a specific tenant, the query returns a list containing only the tenant associated with the requestor.
- This ensures that the tenant has access only to its own information, adhering to strict isolation principles in a multi-tenant architecture.
Domain Query Struct:
type TenantQueryList struct {
Page int64 `json:"page,omitempty"`
PageSize int64 `json:"pageSize,omitempty"`
OrderBy string `json:"orderBy,omitempty"`
}
Domain Query Handling Method:
func (qs *queryService) TenantQueryList(ctx context.Context, qry comby.Query, domainQry *TenantQueryList) (*TenantQueryListResponse, error)
TenantQueryListForAccount
Domain Query Struct:
type TenantQueryListForAccount struct {
AccountUuid string `json:"accountUuid"`
Page int64 `json:"page,omitempty"`
PageSize int64 `json:"pageSize,omitempty"`
OrderBy string `json:"orderBy,omitempty"`
}
Domain Query Handling Method:
func (qs *queryService) TenantQueryListForAccount(ctx context.Context, qry comby.Query, domainQry *TenantQueryListForAccount) (*TenantQueryListResponse, error)
TenantQueryModelByName
Domain Query Struct:
type TenantQueryModelByName struct {
Name string `json:"name"`
}
Domain Query Handling Method:
func (qs *queryService) TenantQueryModelByName(ctx context.Context, qry comby.Query, domainQry *TenantQueryModelByName) (*TenantQueryItemResponse, error)
TenantQueryModel
Domain Query Struct:
type TenantQueryModel struct {
TenantUuid string `json:"tenantUuid"`
}
Domain Query Handling Method:
func (qs *queryService) TenantQueryModel(ctx context.Context, qry comby.Query, domainQry *TenantQueryModel) (*TenantQueryItemResponse, error)
TenantQueryListResponse
type TenantQueryListResponse struct {
Items []*readmodel.TenantModel `json:"items,omitempty"`
Total int64 `json:"total,omitempty"`
Page int64 `json:"page,omitempty"`
PageSize int64 `json:"pageSize,omitempty"`
}
TenantQueryItemResponse
type TenantQueryItemResponse struct {
Item *readmodel.TenantModel `json:"item,omitempty"`
}
Events
TenantCreatedEvent
Domain Event Struct:
type TenantCreatedEvent struct {
TenantUuid string `json:"tenantUuid"`
Name string `json:"name"`
}
Domain Event Handling Method:
func (agg *Tenant) TenantCreatedEvent(ctx context.Context, evt comby.Event, domainEvt *TenantCreatedEvent) (error)
TenantRemovedEvent
Domain Event Struct:
type TenantRemovedEvent struct {
TenantUuid string `json:"tenantUuid"`
}
Domain Event Handling Method:
func (agg *Tenant) TenantRemovedEvent(ctx context.Context, evt comby.Event, domainEvt *TenantRemovedEvent) (error)
TenantAttributesSetEvent
Domain Event Struct:
type TenantAttributesSetEvent struct {
TenantUuid string `json:"tenantUuid"`
Attributes *comby.AttributeMap `json:"attributes,omitempty"`
}
Domain Event Handling Method:
func (agg *Tenant) TenantAttributesSetEvent(ctx context.Context, evt comby.Event, domainEvt *TenantAttributesSetEvent) (error)
TenantSecretSetEvent
Domain Event Struct:
type TenantSecretSetEvent struct {
TenantUuid string `json:"tenantUuid"`
SecretKey string `json:"SecretKey"`
SecretValue string `json:"SecretValue,omitempty"`
}
Domain Event Handling Method:
func (agg *Tenant) TenantSecretSetEvent(ctx context.Context, evt comby.Event, domainEvt *TenantSecretSetEvent) (error)
TenantUpdatedEvent
Domain Event Struct:
type TenantUpdatedEvent struct {
TenantUuid string `json:"tenantUuid"`
Name string `json:"name,omitempty"`
}
Domain Event Handling Method:
func (agg *Tenant) TenantUpdatedEvent(ctx context.Context, evt comby.Event, domainEvt *TenantUpdatedEvent) (error)
Aggregate
Aggregate Struct:
type Tenant struct {
*comby.BaseAggregate
// Value Objects
Name string
Attributes *comby.AttributeMap
Secrets *comby.AttributeMap
}
Methods
Create
func (agg *Tenant) Create(name string) (error)
Remove
func (agg *Tenant) Remove() (error)
SetAttributes
func (agg *Tenant) SetAttributes(attributes *comby.AttributeMap) (error)
SetSecret
func (agg *Tenant) SetSecret(secretKey, secretValue string) (error)
Update
func (agg *Tenant) Update(name string) (error)
Event Handlers
TenantReadmodel
Domain Event | Method |
---|---|
webhookAggregate.WebhookRemovedEvent | WebhookRemovedEvent |
webhookAggregate.WebhookAddedEvent | WebhookAddedEvent |
tenantAggregate.TenantCreatedEvent | TenantCreatedEvent |
tenantAggregate.TenantSecretSetEvent | TenantSecretSetEvent |
tenantAggregate.TenantAttributesSetEvent | TenantAttributesSetEvent |
tenantAggregate.TenantUpdatedEvent | TenantUpdatedEvent |
tenantAggregate.TenantRemovedEvent | TenantRemovedEvent |
invitationAggregate.InvitationCreatedEvent | InvitationCreatedEvent |
invitationAggregate.InvitationRemovedEvent | InvitationRemovedEvent |
identityAggregate.IdentityProfileUpdatedEvent | IdentityProfileUpdatedEvent |
identityAggregate.IdentityRemovedEvent | IdentityRemovedEvent |
identityAggregate.IdentityCreatedEvent | IdentityCreatedEvent |
groupAggregate.GroupUpdatedEvent | GroupUpdatedEvent |
groupAggregate.GroupRemovedEvent | GroupRemovedEvent |
groupAggregate.GroupAddedEvent | GroupAddedEvent |
assetAggregate.AssetAddedEvent | AssetAddedEvent |
assetAggregate.AssetRemovedEvent | AssetRemovedEvent |
Webhook
Commands
WebhookCommandAdd
Domain Command Struct:
type WebhookCommandAdd struct {
WebhookUuid string `json:"webhookUuid"`
EventDataName string `json:"eventDataName"`
EventDataType string `json:"eventDataType"`
WebhookUrl string `json:"webhookUrl"`
}
Domain Command Handling Method:
func (cs *commandService) WebhookCommandAdd(ctx context.Context, cmd comby.Command, domainCmd *WebhookCommandAdd) ([]comby.Event, error)
WebhookCommandRemove
Domain Command Struct:
type WebhookCommandRemove struct {
WebhookUuid string `json:"webhookUuid"`
}
Domain Command Handling Method:
func (cs *commandService) WebhookCommandRemove(ctx context.Context, cmd comby.Command, domainCmd *WebhookCommandRemove) ([]comby.Event, error)
WebhookCommandSetAttributes
Domain Command Struct:
type WebhookCommandSetAttributes struct {
WebhookUuid string `json:"webhookUuid"`
Attributes *comby.AttributeMap `json:"attributes"`
}
Domain Command Handling Method:
func (cs *commandService) WebhookCommandSetAttributes(ctx context.Context, cmd comby.Command, domainCmd *WebhookCommandSetAttributes) ([]comby.Event, error)
WebhookCommandUpdate
Domain Command Struct:
type WebhookCommandUpdate struct {
WebhookUuid string `json:"webhookUuid"`
Active bool `json:"active,omitempty"`
EventDataName string `json:"eventDataName,omitempty"`
EventDataType string `json:"eventDataType,omitempty"`
WebhookUrl string `json:"webhookUrl,omitempty"`
PatchedFields []string `json:"patchedFields"`
}
Domain Command Handling Method:
func (cs *commandService) WebhookCommandUpdate(ctx context.Context, cmd comby.Command, domainCmd *WebhookCommandUpdate) ([]comby.Event, error)
Queries
Domain Query Structs:
Domain Query Responses:
WebhookQueryList
Domain Query Struct:
type WebhookQueryList struct {
TenantUuid string `json:"tenantUuid"`
Page int64 `json:"page,omitempty"`
PageSize int64 `json:"pageSize,omitempty"`
OrderBy string `json:"orderBy,omitempty"`
}
Domain Query Handling Method:
func (qs *queryService) WebhookQueryList(ctx context.Context, qry comby.Query, domainQry *WebhookQueryList) (*WebhookQueryListResponse, error)
WebhookQueryModel
Domain Query Struct:
type WebhookQueryModel struct {
WebhookUuid string `json:"webhookUuid"`
}
Domain Query Handling Method:
func (qs *queryService) WebhookQueryModel(ctx context.Context, qry comby.Query, domainQry *WebhookQueryModel) (*WebhookQueryItemResponse, error)
WebhookQueryListResponse
type WebhookQueryListResponse struct {
Items []*readmodel.WebhookModel `json:"items,omitempty"`
Total int64 `json:"total,omitempty"`
Page int64 `json:"page,omitempty"`
PageSize int64 `json:"pageSize,omitempty"`
}
WebhookQueryItemResponse
type WebhookQueryItemResponse struct {
Item *readmodel.WebhookModel `json:"item,omitempty"`
}
Events
WebhookAddedEvent
Domain Event Struct:
type WebhookAddedEvent struct {
WebhookUuid string `json:"webhookUuid"`
EventDataName string `json:"eventDataName"`
EventDataType string `json:"eventDataType"`
WebhookUrl string `json:"webhookUrl"`
}
Domain Event Handling Method:
func (agg *Webhook) WebhookAddedEvent(ctx context.Context, evt comby.Event, domainEvt *WebhookAddedEvent) (error)
WebhookRemovedEvent
Domain Event Struct:
type WebhookRemovedEvent struct {
WebhookUuid string `json:"webhookUuid"`
}
Domain Event Handling Method:
func (agg *Webhook) WebhookRemovedEvent(ctx context.Context, evt comby.Event, domainEvt *WebhookRemovedEvent) (error)
WebhookAttributesSetEvent
Domain Event Struct:
type WebhookAttributesSetEvent struct {
WebhookUuid string `json:"webhookUuid"`
Attributes *comby.AttributeMap `json:"attributes,omitempty"`
}
Domain Event Handling Method:
func (agg *Webhook) WebhookAttributesSetEvent(ctx context.Context, evt comby.Event, domainEvt *WebhookAttributesSetEvent) (error)
WebhookUpdatedEvent
Domain Event Struct:
type WebhookUpdatedEvent struct {
WebhookUuid string `json:"webhookUuid"`
Active bool `json:"active"`
EventDataName string `json:"eventDataName"`
EventDataType string `json:"eventDataType"`
WebhookUrl string `json:"webhookUrl"`
}
Domain Event Handling Method:
func (agg *Webhook) WebhookUpdatedEvent(ctx context.Context, evt comby.Event, domainEvt *WebhookUpdatedEvent) (error)
Aggregate
Aggregate Struct:
type Webhook struct {
*comby.BaseAggregate
// Value Objects
Active bool
EventDataName string
EventDataType string
WebhookUrl string
Attributes *comby.AttributeMap
}
Methods
Add
func (agg *Webhook) Add(eventDataName, eventDataType, webhookUrl string) (error)
Remove
func (agg *Webhook) Remove() (error)
SetAttributes
func (agg *Webhook) SetAttributes(attributes *comby.AttributeMap) (error)
Update
func (agg *Webhook) Update(active bool, eventDataName, eventDataType, webhookUrl string) (error)
Event Handlers
WebhookReadmodel
Domain Event | Method |
---|---|
webhookAggregate.WebhookAddedEvent | WebhookAddedEvent |
webhookAggregate.WebhookUpdatedEvent | WebhookUpdatedEvent |
webhookAggregate.WebhookRemovedEvent | WebhookRemovedEvent |
webhookAggregate.WebhookAttributesSetEvent | WebhookAttributesSetEvent |
tenantAggregate.TenantCreatedEvent | TenantCreatedEvent |
tenantAggregate.TenantRemovedEvent | TenantRemovedEvent |
tenantAggregate.TenantUpdatedEvent | TenantUpdatedEvent |