Documentation ¶
Overview ¶
Application Core encapsulates domain model access and execution. The primary responsibility is safety guarantee of driving side of ApplicationCore's boundary.
Only DTO is transferred outside of application core, and DTO contains only expected values and no technical details. Authorization validation is performed for all interactions.
Index ¶
- type ActionHandler
- type ApplicationCore
- func (core *ApplicationCore) Engine() *domain.Engine
- func (core *ApplicationCore) Entities() *EntitiesAccessor
- func (core *ApplicationCore) ExecuteAction(ctx context.Context, name string, input values.Values) (output values.Values, err error)
- func (core *ApplicationCore) ExecuteFunction(ctx context.Context, key domain.DomainFunctionKey, input interface{}, ...) error
- func (core *ApplicationCore) GetEntityTypeService() *DomainDefinitionAccessor
- func (core *ApplicationCore) Open(engine *domain.Engine, ...)
- func (core *ApplicationCore) Projections() *ProjectionsAccessor
- type AuthorizationDecisionProvider
- type Decision
- type DomainDefinitionAccessor
- type DomainFunctionAuthorizationProvider
- type EntitiesAccessor
- func (a *EntitiesAccessor) Create(ctx context.Context, name entity.Key, attrs values.Values) (entity.Instance, error)
- func (a *EntitiesAccessor) Delete(ctx context.Context, entityTypeName entity.Key, id int64) error
- func (a *EntitiesAccessor) ExecuteCommand(context context.Context, name entity.Key, id int64, key entity.CommandKey, ...) (values.Values, error)
- func (a *EntitiesAccessor) Find(ctx context.Context, query entity.Query) ([]entity.Instance, error)
- func (a *EntitiesAccessor) FindAll(ctx context.Context, entityTypeName entity.Key) ([]entity.Instance, error)
- func (a *EntitiesAccessor) FindByAttributes(ctx context.Context, entityTypeName entity.Key, attributes values.Values, ...) ([]entity.Instance, error)
- func (a *EntitiesAccessor) FindByStringValues(ctx context.Context, entityTypeName entity.Key, strings map[string][]string, ...) ([]entity.Instance, error)
- func (a *EntitiesAccessor) Get(ctx context.Context, entityTypeName entity.Key, entityId int64) (entity.Instance, error)
- func (a *EntitiesAccessor) GetCommandDefaultInput(context context.Context, name entity.Key, id int64, key entity.CommandKey) (values.Holder, error)
- func (a *EntitiesAccessor) GetRevisions(ctx context.Context, entityTypeName entity.Key, id int64) ([]domain.EntityRevision, error)
- type EntityAccessNotAllowedError
- type EntityAuthorizationDecisionEvaluator
- type ProjectionAccessEvaluator
- type ProjectionAccessNotAllowedError
- type ProjectionsAccessor
- func (a *ProjectionsAccessor) Find(ctx context.Context, q projection.Query) ([]projection.Instance, error)
- func (a *ProjectionsAccessor) FindAll(ctx context.Context, projectionTypeName string) ([]projection.Instance, error)
- func (a *ProjectionsAccessor) FindByStringValues(ctx context.Context, projectionTypeName string, strings map[string][]string, ...) ([]projection.Instance, error)
- func (a *ProjectionsAccessor) Get(ctx context.Context, name string, entityId int64) (projection.Instance, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ActionHandler ¶
type ApplicationCore ¶
type ApplicationCore struct {
// contains filtered or unexported fields
}
TODO: check guarantee
func (*ApplicationCore) Engine ¶
func (core *ApplicationCore) Engine() *domain.Engine
TODO: think about open, and whether this should completely seal access to engine,...
func (*ApplicationCore) Entities ¶
func (core *ApplicationCore) Entities() *EntitiesAccessor
func (*ApplicationCore) ExecuteAction ¶
func (*ApplicationCore) ExecuteFunction ¶
func (core *ApplicationCore) ExecuteFunction(ctx context.Context, key domain.DomainFunctionKey, input interface{}, output interface{}) error
func (*ApplicationCore) GetEntityTypeService ¶
func (core *ApplicationCore) GetEntityTypeService() *DomainDefinitionAccessor
TODO: exposing storage/engine internals directly
func (*ApplicationCore) Open ¶
func (core *ApplicationCore) Open( engine *domain.Engine, authorizationDecisionProvider AuthorizationDecisionProvider, actions map[string]ActionHandler, )
func (*ApplicationCore) Projections ¶
func (core *ApplicationCore) Projections() *ProjectionsAccessor
type AuthorizationDecisionProvider ¶
type AuthorizationDecisionProvider interface { EntityAuthorizationDecisionProvider() EntityAuthorizationDecisionEvaluator DomainFunction() DomainFunctionAuthorizationProvider ProjectionAccessEvaluator() ProjectionAccessEvaluator }
type DomainDefinitionAccessor ¶
type DomainDefinitionAccessor struct {
// contains filtered or unexported fields
}
func (DomainDefinitionAccessor) EntityType ¶
func (a DomainDefinitionAccessor) EntityType(name entity.Key) (*entity.Definition, error)
func (DomainDefinitionAccessor) EntityTypes ¶
func (a DomainDefinitionAccessor) EntityTypes() []*entity.Definition
func (DomainDefinitionAccessor) Projection ¶
func (a DomainDefinitionAccessor) Projection(name string) (*projection.Definition, error)
type EntitiesAccessor ¶
type EntitiesAccessor struct {
// contains filtered or unexported fields
}
func (*EntitiesAccessor) ExecuteCommand ¶
func (*EntitiesAccessor) FindByAttributes ¶
func (a *EntitiesAccessor) FindByAttributes(ctx context.Context, entityTypeName entity.Key, attributes values.Values, sortBy []query.OrderClause) ([]entity.Instance, error)
TODO: this is a helper function, which builds entity.Query, maybe a create a specialized factory for entity.Query
func (*EntitiesAccessor) FindByStringValues ¶
func (a *EntitiesAccessor) FindByStringValues(ctx context.Context, entityTypeName entity.Key, strings map[string][]string, orderBy []query.OrderClause) ([]entity.Instance, error)
TODO: this is a helper function, which builds entity.Query, maybe a create a specialized factory for entity.Query
func (*EntitiesAccessor) GetCommandDefaultInput ¶
func (*EntitiesAccessor) GetRevisions ¶
func (a *EntitiesAccessor) GetRevisions(ctx context.Context, entityTypeName entity.Key, id int64) ([]domain.EntityRevision, error)
type EntityAccessNotAllowedError ¶
type EntityAccessNotAllowedError struct {
// contains filtered or unexported fields
}
func (EntityAccessNotAllowedError) Error ¶
func (err EntityAccessNotAllowedError) Error() string
type EntityAuthorizationDecisionEvaluator ¶
type EntityAuthorizationDecisionEvaluator interface { EvaluateEntityInstanceAccess(ctx context.Context, reference entity.Reference) Decision EvaluateEntityQueryAccess(ctx context.Context, query entity.Query) Decision // TODO: there are four subjects for evaluation (context, entity, action, input/message) EvaluateEntityActionAccess(ctx context.Context, entity entity.Instance, name string) Decision // TODO: there are four subjects for evaluation (context, entity, action, input/message) EvaluateEntityTypeActionAccess(ctx context.Context, entityType entity.Key, name string) Decision }
type ProjectionAccessNotAllowedError ¶
type ProjectionAccessNotAllowedError struct {
// contains filtered or unexported fields
}
func (ProjectionAccessNotAllowedError) Error ¶
func (err ProjectionAccessNotAllowedError) Error() string
type ProjectionsAccessor ¶
type ProjectionsAccessor struct {
// contains filtered or unexported fields
}
func (*ProjectionsAccessor) Find ¶
func (a *ProjectionsAccessor) Find(ctx context.Context, q projection.Query) ([]projection.Instance, error)
func (*ProjectionsAccessor) FindAll ¶
func (a *ProjectionsAccessor) FindAll(ctx context.Context, projectionTypeName string) ([]projection.Instance, error)
func (*ProjectionsAccessor) FindByStringValues ¶
func (a *ProjectionsAccessor) FindByStringValues(ctx context.Context, projectionTypeName string, strings map[string][]string, orderBy []query.OrderClause) ([]projection.Instance, error)
func (*ProjectionsAccessor) Get ¶
func (a *ProjectionsAccessor) Get(ctx context.Context, name string, entityId int64) (projection.Instance, error)