facade

package
v0.0.0-...-90c44de Latest Latest
Warning

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

Go to latest
Published: May 23, 2025 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ImageTypeCover type for cover image
	ImageTypeCover = "cover"
	// ImageTypeScreenshot type for screenshot images
	ImageTypeScreenshot = "screenshot"

	// MaxImageSizeKB maximum upload image size in KB
	MaxImageSizeKB int64 = 1024
	// MaxCovers maximum number of cover files allowed
	MaxCovers = 1
	// MaxScreenshots maximum number of screenshot files allowed
	MaxScreenshots = 8
)
View Source
const (
	// MaxGamesPerPublisherPerMonth is the maximum number of games a publisher can create in a month
	MaxGamesPerPublisherPerMonth = 2
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Provider

type Provider struct {
	// contains filtered or unexported fields
}

Provider represents dependencies for facade layer

func NewProvider

func NewProvider(logger *zap.Logger, storage Storage, cache *cache.RedisStore, s3Client S3Client) *Provider

NewProvider returns nre provider

func (*Provider) CreateGame

func (p *Provider) CreateGame(ctx context.Context, cg model.CreateGame) (id int32, err error)

CreateGame creates new game

func (*Provider) DeleteGame

func (p *Provider) DeleteGame(ctx context.Context, id int32, publisher string) error

DeleteGame deletes game by id

func (*Provider) GetCompanies

func (p *Provider) GetCompanies(ctx context.Context) ([]model.Company, error)

GetCompanies returns companies

func (*Provider) GetCompaniesMap

func (p *Provider) GetCompaniesMap(ctx context.Context) (map[int32]model.Company, error)

GetCompaniesMap returns all companies map

func (*Provider) GetCompanyByID

func (p *Provider) GetCompanyByID(ctx context.Context, id int32) (model.Company, error)

GetCompanyByID returns company by id

func (*Provider) GetGameByID

func (p *Provider) GetGameByID(ctx context.Context, id int32) (model.Game, error)

GetGameByID returns game by id

func (*Provider) GetGames

func (p *Provider) GetGames(ctx context.Context, page, pageSize int, filter model.GamesFilter) (games []model.Game, count uint64, err error)

GetGames returns games and count with pagination

func (*Provider) GetGenreByID

func (p *Provider) GetGenreByID(ctx context.Context, id int32) (model.Genre, error)

GetGenreByID returns genre by id

func (*Provider) GetGenres

func (p *Provider) GetGenres(ctx context.Context) ([]model.Genre, error)

GetGenres returns all genres

func (*Provider) GetGenresMap

func (p *Provider) GetGenresMap(ctx context.Context) (map[int32]model.Genre, error)

GetGenresMap returns all genres map

func (*Provider) GetPlatformByID

func (p *Provider) GetPlatformByID(ctx context.Context, id int32) (model.Platform, error)

GetPlatformByID returns platform by id

func (*Provider) GetPlatforms

func (p *Provider) GetPlatforms(ctx context.Context) ([]model.Platform, error)

GetPlatforms returns all platforms

func (*Provider) GetPlatformsMap

func (p *Provider) GetPlatformsMap(ctx context.Context) (map[int32]model.Platform, error)

GetPlatformsMap returns all platforms map

func (*Provider) GetTopCompanies

func (p *Provider) GetTopCompanies(ctx context.Context, companyType string, limit int64) ([]model.Company, error)

GetTopCompanies returns top companies by type

func (*Provider) GetTopGenres

func (p *Provider) GetTopGenres(ctx context.Context, limit int64) ([]model.Genre, error)

GetTopGenres returns top genres

func (*Provider) GetUserRatings

func (p *Provider) GetUserRatings(ctx context.Context, userID string) (map[int32]uint8, error)

GetUserRatings returns user's rating for specified games

func (*Provider) RateGame

func (p *Provider) RateGame(ctx context.Context, gameID int32, userID string, rating uint8) error

RateGame sets rating to game by user

func (*Provider) UpdateGame

func (p *Provider) UpdateGame(ctx context.Context, id int32, upd model.UpdateGame) error

UpdateGame updates game

func (*Provider) UploadGameImages

func (p *Provider) UploadGameImages(ctx context.Context, coverFiles, screenshotFiles []*multipart.FileHeader, publisherName string) ([]model.File, error)

UploadGameImages handles the business logic for uploading game images

type S3Client

type S3Client interface {
	Upload(ctx context.Context, data io.ReadSeeker, contentType string, md map[string]string) (s3.UploadResult, error)
}

S3Client represents the interface for S3 client operations

type Storage

type Storage interface {
	GetGames(ctx context.Context, pageSize, page int, filter model.GamesFilter) (list []model.Game, err error)
	GetGamesCount(ctx context.Context, filter model.GamesFilter) (count uint64, err error)
	GetGameByID(ctx context.Context, id int32) (game model.Game, err error)
	CreateGame(ctx context.Context, cg model.CreateGameData) (id int32, err error)
	UpdateGame(ctx context.Context, id int32, ug model.UpdateGameData) error
	DeleteGame(ctx context.Context, id int32) error
	UpdateGameRating(ctx context.Context, id int32) error
	GetPublisherGamesCount(ctx context.Context, publisherID int32, startDate, endDate time.Time) (count int, err error)

	CreateCompany(ctx context.Context, c model.Company) (id int32, err error)
	GetCompanies(ctx context.Context) (companies []model.Company, err error)
	GetCompanyByID(ctx context.Context, id int32) (company model.Company, err error)
	GetCompanyIDByName(ctx context.Context, name string) (id int32, err error)
	GetTopDevelopers(ctx context.Context, limit int64) (companies []model.Company, err error)
	GetTopPublishers(ctx context.Context, limit int64) (companies []model.Company, err error)

	GetGenres(ctx context.Context) (genres []model.Genre, err error)
	GetGenreByID(ctx context.Context, id int32) (genre model.Genre, err error)
	GetTopGenres(ctx context.Context, limit int64) (genres []model.Genre, err error)

	GetPlatforms(ctx context.Context) (platforms []model.Platform, err error)
	GetPlatformByID(ctx context.Context, id int32) (platform model.Platform, err error)

	AddRating(ctx context.Context, cr model.CreateRating) error
	RemoveRating(ctx context.Context, rr model.RemoveRating) error
	GetUserRatings(ctx context.Context, userID string) (map[int32]uint8, error)
}

Storage provides methods for working with database

Directories

Path Synopsis
Package facade_mock is a generated GoMock package.
Package facade_mock is a generated GoMock package.

Jump to

Keyboard shortcuts

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