repository

package
v0.0.0-...-b15666a Latest Latest
Warning

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

Go to latest
Published: Mar 10, 2024 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewMoviesRepository

func NewMoviesRepository(moviesRepo MoviesRepository,
	moviesCache MoviesCache,
	moviesPreviewRepo MoviesPreviewRepository,
	moviesPreviewCache MoviesPreviewCache,
	ageRatingsRepo AgeRatingRepository,
	genresRepo GenresRepository,
	countriesRepo CountryRepository,
	cfg RepositoryConfig,
	logger *logrus.Logger) *moviesRepository

Types

type AgeRatingRepository

type AgeRatingRepository interface {
	GetAgeRatings(ctx context.Context) ([]string, error)
}

type CountryRepository

type CountryRepository interface {
	GetCountries(ctx context.Context, movieId int32) ([]string, error)
	GetCountriesForMovies(ctx context.Context, ids []string) (map[int32][]string, error)
	GetAllCountries(ctx context.Context) ([]models.Country, error)
}

type DBConfig

type DBConfig struct {
	Host     string `yaml:"host" env:"DB_HOST"`
	Port     string `yaml:"port" env:"DB_PORT"`
	Username string `yaml:"username" env:"DB_USERNAME"`
	Password string `yaml:"password" env:"DB_PASSWORD"`
	DBName   string `yaml:"db_name" env:"DB_NAME"`
	SSLMode  string `yaml:"ssl_mode" env:"DB_SSL_MODE"`
}

type GenresRepository

type GenresRepository interface {
	GetGenres(ctx context.Context, movieId int32) ([]string, error)
	GetGenresForMovies(ctx context.Context, ids []string) (map[int32][]string, error)
	GetAllGenres(ctx context.Context) ([]models.Genre, error)
}

type MoviesCache

type MoviesCache interface {
	GetMovie(ctx context.Context, movieId int32) (models.RepositoryMovie, error)
	CacheMovies(ctx context.Context, movies []models.RepositoryMovie, ttl time.Duration) error
}

type MoviesPreviewCache

type MoviesPreviewCache interface {
	GetMovie(ctx context.Context, movieId int32) (models.RepositoryMoviePreview, error)
	GetMoviesIDs(ctx context.Context, Filter models.MoviesFilter, limit, offset uint32) ([]string, error)
	GetMovies(ctx context.Context, ids []string) ([]models.RepositoryMoviePreview, []string, error)

	CacheMovies(ctx context.Context, movies []models.RepositoryMoviePreview, ttl time.Duration) error
	CacheFilteredRequest(ctx context.Context, Filter models.MoviesFilter,
		limit, offset uint32, moviesIDs []string, ttl time.Duration) error
}

type MoviesPreviewRepository

type MoviesPreviewRepository interface {
	GetMoviesPreviewIds(ctx context.Context, Filter models.MoviesFilter, limit, offset uint32) ([]string, error)
	GetMoviePreview(ctx context.Context, movieId int32) (models.RepositoryMoviePreview, error)
	GetMovies(ctx context.Context, ids []int32) ([]models.RepositoryMoviePreview, error)
}

type MoviesRepository

type MoviesRepository interface {
	GetMovie(ctx context.Context, movieId int32) (models.RepositoryMovie, error)
}

type RepositoryConfig

type RepositoryConfig struct {
	MovieTTL        time.Duration
	FilteredTTL     time.Duration
	MoviePreviewTTL time.Duration
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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