libdomain

package
v0.0.0-...-437541a Latest Latest
Warning

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

Go to latest
Published: Apr 27, 2024 License: Apache-2.0 Imports: 6 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 ExternalIDProperty = &basepb.BaseProperty{Snake: "external_id"}
View Source
var ExternalModuleProperty = &basepb.BaseProperty{Snake: "external_module"}
View Source
var IDProperty = &basepb.BaseProperty{Snake: "id"}
View Source
var SetAggregateIDProperty func(string) Property
View Source
var TenantIDProperty = &basepb.BaseProperty{Snake: "tenant_id"}

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

	Queries  []*CustomRequest
	Commands []*CustomRequest

	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) *CustomRequest

func (*AggregateDefinition) GetCustomRequests

func (a *AggregateDefinition) GetCustomRequests() []*CustomRequest

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, []map[string]string,
	) 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
	GraphqlSchemaType() 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 CustomRequest

type CustomRequest struct {
	Name       string
	Event      string
	OnFactory  bool
	Repository bool
	Args       []ArgsInterface
	Results    []ArgsInterface
	// contains filtered or unexported fields
}

func (*CustomRequest) IsCommand

func (f *CustomRequest) IsCommand() bool

func (*CustomRequest) Title

func (f *CustomRequest) 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 []*CustomRequest
}

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
	NoCache              bool
	// contains filtered or unexported fields
}

func (*EntityDefinition) AggregateDefinition

func (t *EntityDefinition) AggregateDefinition() *AggregateDefinition

func (*EntityDefinition) DomainPath

func (t *EntityDefinition) DomainPath() string

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) GetNoCache

func (t *EntityDefinition) GetNoCache() bool

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) Upper

func (f *EntityDefinition) Upper() string

func (*EntityDefinition) UseTenants

func (t *EntityDefinition) UseTenants() bool

type EntityQueriesDefinition

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

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
	TenantID  string
	Module    string
	Data      []map[string]string
}

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 []FilterInterface, with []string,
		offset *uint, limit *uint, orderByArg *string,
	) ([]DomainObjectInterface, error)
	Create                  func(records interface{}) ([]DomainObjectInterface, error)
	PostCreate              func(records *Collection) error
	PostCreateSelectFilters func([]FilterInterface, []DomainObjectInterface) []FilterInterface
	Upsert                  func([]FilterInterface, 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 FilterInterface

type FilterInterface interface{}

type JWTClaims

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

type ListQueryInterface

type ListQueryInterface interface {
	GetOptions() *basepb.OptionsListQuery
}

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
	Upper() string
	Type() PropertyType
	GoType() string
	GoTypeID() string
	GoNil() string
	JSONType() string
	ProtoType() string
	ProtoTypeArg() 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
	GetReturnDetailsInTests() bool
	GetLoadedPosition() int
	GetLoadedPositionMany2one() int
	GetPositionMany2one() int
}

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
}

func (*RepeatedProperty) DBType

func (r *RepeatedProperty) DBType() *DBType

func (*RepeatedProperty) GetInverseProperty

func (r *RepeatedProperty) GetInverseProperty() string

func (*RepeatedProperty) GetLoadedPosition

func (r *RepeatedProperty) GetLoadedPosition() int

func (*RepeatedProperty) GetLoadedPositionMany2one

func (r *RepeatedProperty) GetLoadedPositionMany2one() int

func (*RepeatedProperty) GetName

func (r *RepeatedProperty) GetName() string

func (*RepeatedProperty) GetPosition

func (r *RepeatedProperty) GetPosition() int

func (*RepeatedProperty) GetPositionMany2one

func (r *RepeatedProperty) GetPositionMany2one() 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) GetReturnDetailsInTests

func (r *RepeatedProperty) GetReturnDetailsInTests() bool

func (*RepeatedProperty) GoNil

func (r *RepeatedProperty) GoNil() string

func (*RepeatedProperty) GoType

func (r *RepeatedProperty) GoType() string

func (*RepeatedProperty) GoTypeID

func (r *RepeatedProperty) GoTypeID() 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) LoadedPosition

func (r *RepeatedProperty) LoadedPosition() int

func (*RepeatedProperty) LoadedPositionMany2one

func (r *RepeatedProperty) LoadedPositionMany2one() int

func (*RepeatedProperty) NameWithoutID

func (r *RepeatedProperty) NameWithoutID() string

func (*RepeatedProperty) Position

func (r *RepeatedProperty) Position() int

func (*RepeatedProperty) PositionMany2one

func (r *RepeatedProperty) PositionMany2one() int

func (*RepeatedProperty) ProtoType

func (r *RepeatedProperty) ProtoType() string

func (*RepeatedProperty) ProtoTypeArg

func (r *RepeatedProperty) ProtoTypeArg() 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

func (*RepeatedProperty) Upper

func (r *RepeatedProperty) Upper() string

type RepositoryInterface

type RepositoryInterface interface {
	// Insert(WorkflowInterface, interface{}) ([]DomainObjectInterface, error)
	// // Select(TableInterface, WorkflowInterface, *basepb.ListQuery) ([]DomainObjectInterface, error)
	// Update(*AggregateDefinition, WorkflowInterface, []FilterInterface, interface{}) ([]DomainObjectInterface, error)
	// Delete(*AggregateDefinition, WorkflowInterface, []FilterInterface) 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
	Upper() 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
	GetNoCache() bool
	DomainPath() string
}

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) DomainPath

func (t *ValueObjectDefinition) DomainPath() string

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) GetNoCache

func (t *ValueObjectDefinition) GetNoCache() bool

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) Upper

func (f *ValueObjectDefinition) Upper() 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
	Commit() error
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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