Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Condition ¶
type Condition byte
Condition represents a filter comparison operation between a field and a value
const ( // Equal if it should be the same Equal Condition = 1 << iota // LessThan if it should be smaller LessThan // LessThanOrEqual if it should be smaller or equal LessThanOrEqual // GreaterThan if it should be larger GreaterThan // GreaterThanOrEqual if it should be equal or greater than GreaterThanOrEqual )
type Factory ¶
type Factory interface {
// NewPost creates a new Post interactor
NewPost() Post
}
Factory interface allows us to provide other parts of the system with a way to make instances of our use-case / interactors when they need to
func NewEngine ¶
func NewEngine(s StorageFactory) Factory
NewEngine creates a new engine factory that will make use of the passed in StorageFactory for any data persistence needs.
type JWTSignParser ¶
type JWTSignParser interface {
Sign(claims map[string]interface{}, secret string) (map[string]interface{}, error)
Parse(tokenStr string, secret string) (map[string]interface{}, error)
}
JWTSignParser ...
type Post ¶
type Post interface {
Insert(ctx context.Context, author, topic, category, contentText, contentPhoto string) error
// Update is the update-a-post use-case
Update(ctx context.Context, author, topic, category, contentText, contentPhoto string, id string) error
// Query is the list-the-posts use-case
Query(ctx context.Context, skip uint64, take uint64) ([]domain.Post, error)
// FindOne ...
FindOne(ctx context.Context, id string) (*domain.Post, error)
// RemoveDelete ...
Remove(ctx context.Context, id string) (string, error)
// ListAllPosts ...
ListAllPosts(ctx context.Context, skip, take uint64) (*[]domain.Post, error)
}
Post ...
type PostRepository ¶
type PostRepository interface {
// Post adds a new Post to the datastore
Insert(c context.Context, post domain.Post) error
// Put adds a new Post to the datastore
Update(c context.Context, post domain.Post, id string) error
// Query returns existing posts matching the
// query provided
Query(c context.Context, query *Query) []*domain.Post
// FindOne returns ...
FindOne(c context.Context, id string) (*domain.Post, error)
// Remove ...
Remove(c context.Context, id string) (string, error)
// ListAllPosts ...
ListAllPosts(ctx context.Context, skip uint64, take uint64) ([]domain.Post, error)
}
PostRepository defines the methods that any data storage provider needs to implement to get and store posts
type Query ¶
Query represents a query specification for filtering sorting, paging and limiting the data requested
func NewQuery ¶
NewQuery creates a new database query spec. The name is what the storage system should use to identify the types, usually a table or collection name.
type QueryBuilder ¶
type QueryBuilder interface {
Filter(property string, value interface{}) QueryBuilder
Order(property string, direction Direction)
}
QueryBuilder helps with query creation
type SecurityFactory ¶
type SecurityFactory interface {
// NewSecurityFactory ...
NewSecurityFactory() JWTSignParser
}
SecurityFactory ...
type StorageFactory ¶
type StorageFactory interface {
// NewPostRepository returns a storage specific
// PostRepository implementation
NewPostRepository() PostRepository
Close()
}
StorageFactory is the interface that a storage provider needs to implement so that the engine can request repository instances as it needs them