libdomain

package
v0.0.0-...-ec57856 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 30, 2022 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const OnDeleteCascade = OnDeleteValue("CASCADE")
View Source
const OnDeleteProtect = OnDeleteValue("PROTECT")
View Source
const OnDeleteSetNull = OnDeleteValue("SET NULL")
View Source
const RepeatedPropertyType = PropertyType("RepeatedPropertyType")
View Source
const STRING = "string"

STRING is a contains reprensenting the widely used string type.

Variables

View Source
var SetAggregateIDProperty func(string) Property

Functions

func GetIdsFromRecordList

func GetIdsFromRecordList(records []DomainObjectInterface) []string

GetIdsFromRecordList will return the id from a list of records.

Types

type AggregateDefinition

type AggregateDefinition struct {
	AggregateRoot *EntityDefinition
	Children      []*EntityDefinition
	UseTenants    bool

	ValueObjects []*ValueObjectDefinition

	Commands []*CustomCommand

	EventStoreClient    EventStoreClient
	EventDispatchClient EventDispatchClient
	ExternalData        []*ExternalData
	// contains filtered or unexported fields
}

Definition is used to declare the information of a model, so it can generate its code.

func (*AggregateDefinition) GetCommandByName

func (a *AggregateDefinition) GetCommandByName(name string) *CustomCommand

func (*AggregateDefinition) GetEntities

func (a *AggregateDefinition) GetEntities() []*EntityDefinition

func (*AggregateDefinition) GetEntityByName

func (a *AggregateDefinition) GetEntityByName(name string) *EntityDefinition

func (*AggregateDefinition) GetTables

func (a *AggregateDefinition) GetTables() []TableInterface

func (*AggregateDefinition) GetValueObjectByName

func (a *AggregateDefinition) GetValueObjectByName(name string) *ValueObjectDefinition

type AggregateInterface

type AggregateInterface interface {
	Definition() *AggregateDefinition
	RepositoryInterface() RepositoryInterface
	// SetRepository(RepositoryInterface)
	AggregateRootInterface() AggregateRootInterface
	LoadExternalData(
		WorkflowInterface, string, []interface{},
	) error
}

Definition is used to declare the information of a model, so it can generate its code.

type AggregateRootInterface

type AggregateRootInterface interface {
	CheckIDExist(WorkflowInterface, string) error
}

type ArgsInterface

type ArgsInterface interface {
	GetName() string
	Title() string
	ProtoType() string
	GoType() string
	GoNil() string
	GetReferenceName() string
	GetReference() TableInterface
	SetReference(e TableInterface)
	Type() PropertyType
	IsRepeated() bool
}

type Collection

type Collection struct {
	Aggregate AggregateInterface
	Workflow  WorkflowInterface

	Update func(interface{}) ([]DomainObjectInterface, error)
	Delete func() error
	// contains filtered or unexported fields
}

Collection contains several objects of a same model.

func (*Collection) GetByID

func (c *Collection) GetByID(id string) interface{}

GetByID will return the specified record in the collection, by ID.

func (*Collection) GetKeys

func (c *Collection) GetKeys() []string

GetByID will return the specified record in the collection, by ID.

func (*Collection) Init

func (c *Collection) Init(records []DomainObjectInterface)

Init will initialize the collection with the specified records.

func (*Collection) Slice

func (c *Collection) Slice() []DomainObjectInterface

Slice will return the records in the collection, as a slice.

type CustomCommand

type CustomCommand struct {
	Name       string
	Event      string
	Repository bool
	Args       []ArgsInterface
	Results    []ArgsInterface
}

func (*CustomCommand) Title

func (f *CustomCommand) Title() string

type DBType

type DBType struct {
	Type  string
	Value string
}

type Definitions

type Definitions struct {
	Repository string
	// contains filtered or unexported fields
}

func (*Definitions) GetByID

func (ds *Definitions) GetByID(id string) *AggregateDefinition

GetByID return the specified definition by its ID.

func (*Definitions) Register

func (ds *Definitions) Register(a *AggregateDefinition)

Register is used to register a new definition into the service.

func (*Definitions) Slice

func (ds *Definitions) Slice() []*AggregateDefinition

Slice return the definitions as a slice.

type DomainObjectInterface

type DomainObjectInterface interface {
	GetID() string
}

type EntityCommandsDefinition

type EntityCommandsDefinition struct {
	Create         *RequestConfig
	Update         *RequestConfig
	Delete         *RequestConfig
	CustomCommands []*CustomCommand
}

type EntityDefinition

type EntityDefinition struct {
	Aggregate AggregateInterface

	Name            string
	Keys            []Property
	Properties      []Property
	DisableID       bool
	DisableDatetime bool
	Queries         *EntityQueriesDefinition
	Commands        *EntityCommandsDefinition
	UseOneOf        bool
	// useTenants bool
	DisableDatabaseStore bool
	SafeDelete           bool
	Abstract             bool
	// contains filtered or unexported fields
}

func (*EntityDefinition) AggregateDefinition

func (t *EntityDefinition) AggregateDefinition() *AggregateDefinition

func (*EntityDefinition) GetAbstract

func (t *EntityDefinition) GetAbstract() bool

func (*EntityDefinition) GetCommands

func (t *EntityDefinition) GetCommands() *EntityCommandsDefinition

func (*EntityDefinition) GetDisableDatabaseStore

func (t *EntityDefinition) GetDisableDatabaseStore() bool

func (*EntityDefinition) GetDisableDatetime

func (t *EntityDefinition) GetDisableDatetime() bool

func (*EntityDefinition) GetDisableID

func (t *EntityDefinition) GetDisableID() bool

func (*EntityDefinition) GetKeys

func (t *EntityDefinition) GetKeys() []Property

func (*EntityDefinition) GetName

func (t *EntityDefinition) GetName() string

func (*EntityDefinition) GetType

func (t *EntityDefinition) GetType() string

func (*EntityDefinition) GetUseOneOf

func (t *EntityDefinition) GetUseOneOf() bool

func (*EntityDefinition) HasTranslatable

func (t *EntityDefinition) HasTranslatable() bool

func (*EntityDefinition) IsAggregateRoot

func (t *EntityDefinition) IsAggregateRoot() bool

func (*EntityDefinition) IsEntity

func (t *EntityDefinition) IsEntity() bool

func (*EntityDefinition) NestedProperties

func (t *EntityDefinition) NestedProperties() []Property

func (*EntityDefinition) Snake

func (t *EntityDefinition) Snake() string

func (*EntityDefinition) StoredProperties

func (t *EntityDefinition) StoredProperties() []Property
func (t *EntityDefinition) setUseTenants(useTenants bool) {
	t.useTenants = useTenants
}

func (*EntityDefinition) Title

func (t *EntityDefinition) Title() string

func (*EntityDefinition) UseTenants

func (t *EntityDefinition) UseTenants() bool

type EntityQueriesDefinition

type EntityQueriesDefinition struct {
	Get            *RequestConfig
	List           *RequestConfig
	GetFromEvents  *RequestConfig
	CustomCommands []*CustomCommand
}

type Event

type Event struct {
	ID          string
	Aggregate   AggregateInterface
	AggregateID string
	Name        string
	Payload     map[string]interface{}
}

type EventDispatchClient

type EventDispatchClient interface {
	DispatchEvent(

		event *Event) error
}

type EventStoreClient

type EventStoreClient interface {
	RegisterEvents(WorkflowInterface, AggregateInterface, []*Event) error
	MarkDispatchedEvent(WorkflowInterface, *Event) error
	GetAggregateEvents(WorkflowInterface, AggregateInterface, string) ([]*Event, error)
}

type ExternalData

type ExternalData struct {
	Aggregate AggregateInterface
	Module    string
	Data      []interface{}
}

type Factory

type Factory struct {
	Aggregate                AggregateInterface
	Workflow                 WorkflowInterface
	New                      func() DomainObjectInterface
	Scan                     func(interface{}, *Collection) ([]DomainObjectInterface, error)
	CheckExternalForeignKeys func([]DomainObjectInterface) error
	Select                   func(
		filters []*libdata.Filter, with []string,
		offset *uint, limit *uint, orderByArg *string,
	) (*Collection, error)
	Create                  func(records interface{}) (*Collection, error)
	PostCreate              func(records *Collection) error
	PostCreateSelectFilters func([]*libdata.Filter, []DomainObjectInterface) []*libdata.Filter
	Upsert                  func([]*libdata.Filter, interface{}, bool) (interface{}, bool, error)
}

Pool represent a Model within the current environnement, so we can easily make operation on it.

func (*Factory) Init

func (d *Factory) Init()

Init will initialize the pool.

type FactoryInterface

type FactoryInterface interface {
}

type JWTClaims

type JWTClaims struct {
	*jwt.StandardClaims
	TenantID  string
	UserID    string
	UserEmail string
	Groups    []*basepb.GetByExternalIDQuery
}

type Model

type Model struct{}

Model represent a single record.

type ModelInterface

type ModelInterface interface {
	// Select(
	// 	*WorkflowInterface, []*libdata.Filter,
	// 	[]string, *uint, *string, *string,
	// ) (*Collection, error)
	// Create(*WorkflowInterface, []interface{}) (*Collection, error)
	// Delete(
	// 	*WorkflowInterface, []*libdata.Filter, []string,
	// ) (*Collection, error)
	// SetStore(interface{}) error
	// SetNew(func() interface{}) error
	GetID() string
}

ModelInterface force to define the function relative to Model.

type OnDeleteValue

type OnDeleteValue string

type Property

type Property interface {
	GetName() string
	NameWithoutID() string
	Title() string
	TitleWithoutID() string
	Snake() string
	Type() PropertyType
	GoType() string
	GoNil() string
	JSONType() string
	ProtoType() string
	ProtoTypeOptional() string
	DBType() *DBType
	GraphqlType() string
	GraphqlSchemaType() string
	GetReferenceName() string
	GetReference() TableInterface
	// GetReferenceDefinition() *ModelDefinition
	SetReference(TableInterface)
	GetInverseProperty() string
	GetRequired() bool
	GetPrimaryKey() bool
	// GetFieldData() *FieldData
	IsStored() bool
	IsNested() bool
	SetPosition(int)
	GetPosition() int
	IsRepeated() bool
	IsTranslatable() bool
}

Field is an interface to get the data from the field.

type PropertyType

type PropertyType string

FieldType is the generic type for a data field.

type RepeatedProperty

type RepeatedProperty struct {
	Property Property
	Position int
}

func (*RepeatedProperty) DBType

func (r *RepeatedProperty) DBType() *DBType

func (*RepeatedProperty) GetInverseProperty

func (r *RepeatedProperty) GetInverseProperty() string

func (*RepeatedProperty) GetName

func (r *RepeatedProperty) GetName() string

func (*RepeatedProperty) GetPosition

func (r *RepeatedProperty) GetPosition() int

func (*RepeatedProperty) GetPrimaryKey

func (r *RepeatedProperty) GetPrimaryKey() bool

func (*RepeatedProperty) GetReference

func (r *RepeatedProperty) GetReference() TableInterface

func (*RepeatedProperty) GetReferenceName

func (r *RepeatedProperty) GetReferenceName() string

func (*RepeatedProperty) GetRequired

func (r *RepeatedProperty) GetRequired() bool

func (*RepeatedProperty) GoNil

func (r *RepeatedProperty) GoNil() string

func (*RepeatedProperty) GoType

func (r *RepeatedProperty) GoType() string

func (*RepeatedProperty) GraphqlSchemaType

func (r *RepeatedProperty) GraphqlSchemaType() string

func (*RepeatedProperty) GraphqlType

func (r *RepeatedProperty) GraphqlType() string

func (*RepeatedProperty) IsNested

func (r *RepeatedProperty) IsNested() bool

func (*RepeatedProperty) IsRepeated

func (r *RepeatedProperty) IsRepeated() bool

func (*RepeatedProperty) IsStored

func (r *RepeatedProperty) IsStored() bool

func (*RepeatedProperty) IsTranslatable

func (r *RepeatedProperty) IsTranslatable() bool

func (*RepeatedProperty) JSONType

func (r *RepeatedProperty) JSONType() string

func (*RepeatedProperty) NameWithoutID

func (r *RepeatedProperty) NameWithoutID() string

func (*RepeatedProperty) ProtoType

func (r *RepeatedProperty) ProtoType() string

func (*RepeatedProperty) ProtoTypeOptional

func (r *RepeatedProperty) ProtoTypeOptional() string

func (*RepeatedProperty) SetPosition

func (r *RepeatedProperty) SetPosition(position int)

func (*RepeatedProperty) SetReference

func (r *RepeatedProperty) SetReference(e TableInterface)

func (*RepeatedProperty) Snake

func (r *RepeatedProperty) Snake() string

func (*RepeatedProperty) Title

func (r *RepeatedProperty) Title() string

func (*RepeatedProperty) TitleWithoutID

func (r *RepeatedProperty) TitleWithoutID() string

func (*RepeatedProperty) Type

func (r *RepeatedProperty) Type() PropertyType

type RepositoryInterface

type RepositoryInterface interface {
	Insert(WorkflowInterface, interface{}) ([]DomainObjectInterface, error)
	// Select(TableInterface, WorkflowInterface, *basepb.ListQuery) ([]DomainObjectInterface, error)
	Update(*AggregateDefinition, WorkflowInterface, []*basepb.Where, interface{}) ([]DomainObjectInterface, error)
	Delete(*AggregateDefinition, WorkflowInterface, []*basepb.Where) error
	GetCache(string) ([]byte, error)
	SetCache(string, []byte) error
	GetRecordCache(string, string) ([]byte, error)
	SetRecordCache(string, string, []byte) error
	InvalidateRecordCache(string, string)
	DefinitionInterface() interface{}
}

type RequestConfig

type RequestConfig struct {
	Groups *[]*basepb.GetByExternalIDQuery
}

type TableInterface

type TableInterface interface {
	GetName() string
	Title() string
	Snake() string
	GetType() string
	IsEntity() bool
	UseTenants() bool
	GetDisableID() bool
	GetDisableDatetime() bool
	GetDisableDatabaseStore() bool
	GetUseOneOf() bool
	StoredProperties() []Property
	NestedProperties() []Property
	GetCommands() *EntityCommandsDefinition
	GetKeys() []Property
	IsAggregateRoot() bool
	HasTranslatable() bool
	GetAbstract() bool
}

type ValueObjectDefinition

type ValueObjectDefinition struct {
	Aggregate AggregateInterface

	Name       string
	Keys       []Property
	Properties []Property
	Abstract   bool
	// contains filtered or unexported fields
}

func (*ValueObjectDefinition) AggregateDefinition

func (t *ValueObjectDefinition) AggregateDefinition() *AggregateDefinition

func (*ValueObjectDefinition) GetAbstract

func (t *ValueObjectDefinition) GetAbstract() bool

func (*ValueObjectDefinition) GetCommands

func (*ValueObjectDefinition) GetDisableDatabaseStore

func (t *ValueObjectDefinition) GetDisableDatabaseStore() bool

func (*ValueObjectDefinition) GetDisableDatetime

func (t *ValueObjectDefinition) GetDisableDatetime() bool

func (*ValueObjectDefinition) GetDisableID

func (t *ValueObjectDefinition) GetDisableID() bool

func (*ValueObjectDefinition) GetKeys

func (t *ValueObjectDefinition) GetKeys() []Property

func (*ValueObjectDefinition) GetName

func (t *ValueObjectDefinition) GetName() string

func (*ValueObjectDefinition) GetType

func (t *ValueObjectDefinition) GetType() string

func (*ValueObjectDefinition) GetUseOneOf

func (t *ValueObjectDefinition) GetUseOneOf() bool

func (*ValueObjectDefinition) HasTranslatable

func (t *ValueObjectDefinition) HasTranslatable() bool

func (*ValueObjectDefinition) IsAggregateRoot

func (t *ValueObjectDefinition) IsAggregateRoot() bool

func (*ValueObjectDefinition) IsEntity

func (t *ValueObjectDefinition) IsEntity() bool

func (*ValueObjectDefinition) NestedProperties

func (t *ValueObjectDefinition) NestedProperties() []Property

func (*ValueObjectDefinition) Snake

func (t *ValueObjectDefinition) Snake() string

func (*ValueObjectDefinition) StoredProperties

func (t *ValueObjectDefinition) StoredProperties() []Property

func (*ValueObjectDefinition) Title

func (t *ValueObjectDefinition) Title() string

func (*ValueObjectDefinition) UseTenants

func (t *ValueObjectDefinition) UseTenants() bool

type Workflow

type Workflow struct {
	Context context.Context
	// WorkflowID string
	// WorkflowStep int
	TenantID     string
	JWT          string
	JWTDecrypted *JWTClaims
	// contains filtered or unexported fields
}

func (*Workflow) AddEvent

func (w *Workflow) AddEvent(event *Event)

func (*Workflow) GetEvents

func (w *Workflow) GetEvents() []*Event

type WorkflowInterface

type WorkflowInterface interface {
	Workflow() *Workflow
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL