repositories

package
v0.0.5-alpha Latest Latest
Warning

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

Go to latest
Published: May 17, 2022 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

Functions

func New

func New(config Repositories)

Types

type CommentRepository

type CommentRepository interface {
	Repository[entities.Comment, entities.CommentFilter]
	FindWithPost(ctx context.Context, filters ...*entities.CommentFilter) ([]*entities.Comment, error)
	PaginateWithPost(ctx context.Context, filters ...*entities.CommentFilter) (*entities.Paginate[entities.Comment], error)
}

type FileRepository

type FileRepository interface {
	Repository[entities.File, entities.FileFilter]
}

type PermissionRepository

type PermissionRepository interface {
	Repository[entities.Permission, entities.PermissionFilter]
	All(ctx context.Context) ([]*entities.Permission, error)
}

type PostRepository

type PostRepository interface {
	Repository[entities.Post, entities.PostFilter]
	Approve(ctx context.Context, id int) error
	PublishedPostByID(ctx context.Context, id int) (*entities.Post, error)
	IncreaseViewCount(ctx context.Context, id int, views int64) error
}

type Repositories

type Repositories struct {
	File       FileRepository
	User       UserRepository
	Post       PostRepository
	Role       RoleRepository
	Topic      TopicRepository
	Comment    CommentRepository
	Setting    SettingRepository
	Permission PermissionRepository
}

type Repository

type Repository[E entities.Entity, F entities.EntityFilter] interface {
	All(ctx context.Context) ([]*E, error)
	ByID(ctx context.Context, id int) (*E, error)
	DeleteByID(ctx context.Context, id int) error
	Create(ctx context.Context, data *E) (*E, error)
	Update(ctx context.Context, data *E) (*E, error)
	Count(ctx context.Context, filters ...*F) (int, error)
	Find(ctx context.Context, filters ...*F) ([]*E, error)
	Paginate(ctx context.Context, filters ...*F) (*entities.Paginate[E], error)
}

type RoleRepository

type RoleRepository interface {
	Repository[entities.Role, entities.RoleFilter]
	All(ctx context.Context) ([]*entities.Role, error)
	ByName(ctx context.Context, name string) (*entities.Role, error)
	SetPermissions(ctx context.Context, id int, permissions []*entities.PermissionValue) error
}

type SettingRepository

type SettingRepository interface {
	All(ctx context.Context) []*config.SettingItem
	Save(ctx context.Context, data []*entities.Setting) error
}

type TopicRepository

type TopicRepository interface {
	Repository[entities.Topic, entities.TopicFilter]
	All(ctx context.Context) ([]*entities.Topic, error)
	ByName(ctx context.Context, name string) (*entities.Topic, error)
}

type UserRepository

type UserRepository interface {
	Repository[entities.User, entities.UserFilter]
	ByUsername(ctx context.Context, username string) (*entities.User, error)
	ByProvider(ctx context.Context, providerName, providerId string) (*entities.User, error)
	ByUsernameOrEmail(ctx context.Context, username, email string) ([]*entities.User, error)
	CreateIfNotExistsByProvider(ctx context.Context, userData *entities.User) (*entities.User, error)
	Setting(ctx context.Context, id int, userData *entities.SettingMutation) (*entities.User, error)
}

Jump to

Keyboard shortcuts

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