repo

package
v0.0.0-...-de89868 Latest Latest
Warning

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

Go to latest
Published: Jun 26, 2023 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func New

func New(cfg *config.Config) (*sqlx.DB, error)

New - создает instance DB, возвращает готовое соединение.

func NewConflictError

func NewConflictError(label string, url string, err error) error

NewConflictError упаковывает ошибку err в тип LabelError.

func NewConsumer

func NewConsumer(cfg *config.Config) *consumer

NewConsumer потребитель

func NewLabelError

func NewLabelError(label string, err error) error

NewLabelError упаковывает ошибку err в тип LabelError.

func NewProducer

func NewProducer(cfg *config.Config) *producer

NewProducer производитель

func NewSQLConsumer

func NewSQLConsumer(db *sqlx.DB) *consumerSQL

NewSQLConsumer потребитель

func NewSQLProducer

func NewSQLProducer(db *sqlx.DB) *producerSQL

NewSQLProducer производитель

func NewTimeError

func NewTimeError(err error) error

NewTimeError упаковывает ошибку err в тип TimeError c текущим временем.

Types

type ConflictError

type ConflictError struct {
	Err   error
	Label string // метка должна быть в верхнем регистре
	URL   string // уже имеющийся сокращённый URL
}

ConflictError описывает ошибку с дополнительной меткой и значением.

func (*ConflictError) Error

func (ce *ConflictError) Error() string

Error добавляет поддержку интерфейса error для типа LabelError.

func (*ConflictError) Is

func (ce *ConflictError) Is(err error) bool

Is .

func (*ConflictError) Unwrap

func (ce *ConflictError) Unwrap() error

Unwrap .

type InFiles

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

InFiles -.

func NewInFiles

func NewInFiles(cfg *config.Config) *InFiles

NewInFiles слой взаимодействия с файловым хранилищем

func (*InFiles) Delete

func (i *InFiles) Delete(ctx context.Context, u *entity.User) error

Delete - удаляет URLы переданный в запросе, только если есть права данного пользователя

func (*InFiles) Get

func (i *InFiles) Get(ctx context.Context, sh *entity.Shorturl) (*entity.Shorturl, error)

Get получить конкретный URL по идентификатору

func (*InFiles) GetAll

func (i *InFiles) GetAll(ctx context.Context, u *entity.User) (*entity.User, error)

GetAll получить все URL пользователя по идентификатору

func (*InFiles) GetAllUrls

func (i *InFiles) GetAllUrls() (entity.CountURLs, error)

GetAllUrls получить все URL

func (*InFiles) GetAllUsers

func (i *InFiles) GetAllUsers() (entity.CountUsers, error)

GetAllUsers получить всех пользователей

func (*InFiles) Post

func (i *InFiles) Post(ctx context.Context, sh *entity.Shorturl) error

Post сохранить данные в файл

func (*InFiles) Put

func (i *InFiles) Put(ctx context.Context, sh *entity.Shorturl) error

Put обновить данные в файле

func (*InFiles) Read

func (i *InFiles) Read() error

Read - читает данные из файла

func (*InFiles) Save

func (i *InFiles) Save() error

Save перезаписать файл с новыми данными

type InMemory

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

InMemory Если вам нужно защитить доступ к простой структуре данных, такой как слайс, или map, или что-нибудь своё, и если интерфейс доступа к этой структуре данных прост и прямолинеен — начинайте с мьютекса. Это также помогает спрятать «грязные» подробности кода блокировки в вашем API. Конечные пользователи вашей структуры не должны заботиться о том, как она делает внутреннюю синхронизацию. Определяя структуру, в которой мьютекс должен защищать одно или больше значений, помещайте мьютекс выше тех полей, доступ к которым, он будет защищать.

func NewInMemory

func NewInMemory(cfg *config.Config) *InMemory

NewInMemory слой взаимодействия с хранилищем в памяти.

func (*InMemory) Delete

func (s *InMemory) Delete(ctx context.Context, u *entity.User) error

Delete - удаляет URLы переданный в запросе, только если есть права данного пользователя.

func (*InMemory) Get

func (s *InMemory) Get(ctx context.Context, sh *entity.Shorturl) (*entity.Shorturl, error)

Get получить конкретный URL по идентификатору этого URL и только если этот линк записал текущий пользователь.

func (*InMemory) GetAll

func (s *InMemory) GetAll(ctx context.Context, u *entity.User) (*entity.User, error)

GetAll получить все URL пользователя по идентификатору.

func (*InMemory) GetAllUrls

func (s *InMemory) GetAllUrls() (entity.CountURLs, error)

GetAllUrls получить все URL

func (*InMemory) GetAllUsers

func (s *InMemory) GetAllUsers() (entity.CountUsers, error)

GetAllUsers получить всех пользователей TODO не правильно работает, переделать

func (*InMemory) Post

func (s *InMemory) Post(ctx context.Context, sh *entity.Shorturl) error

Post сохранить данные в память.

{
	UserID: ShortURL{
		UserID: str1
	}
}

func (*InMemory) Put

func (s *InMemory) Put(ctx context.Context, sh *entity.Shorturl) error

Put обновить данные в память.

func (*InMemory) Read

func (s *InMemory) Read() error

Read - читает данные из памяти.

func (*InMemory) Save

func (s *InMemory) Save() error

Save - сохраняет данные в памяти.

type InSQL

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

InSQL .-

func NewInSQL

func NewInSQL(db *sqlx.DB, c *config.Config) *InSQL

NewInSQL слой взаимодействия с db в данном случаи с postgresql

func (*InSQL) Delete

func (i *InSQL) Delete(ctx context.Context, u *entity.User) error

Delete -.

func (*InSQL) Get

func (i *InSQL) Get(ctx context.Context, sh *entity.Shorturl) (*entity.Shorturl, error)

Get -.

func (*InSQL) GetAll

func (i *InSQL) GetAll(ctx context.Context, u *entity.User) (*entity.User, error)

GetAll - получить все данные.

func (*InSQL) GetAllUrls

func (i *InSQL) GetAllUrls() (entity.CountURLs, error)

GetAllUrls - получить все url-адреса не зависимо от авторизации.

func (*InSQL) GetAllUsers

func (i *InSQL) GetAllUsers() (entity.CountUsers, error)

GetAllUsers - получить все url-адреса не зависимо от авторизации.

func (*InSQL) Post

func (i *InSQL) Post(ctx context.Context, sh *entity.Shorturl) error

Post - добавляет данные в DB

func (*InSQL) Put

func (i *InSQL) Put(ctx context.Context, sh *entity.Shorturl) error

Put - обновляет данные

func (*InSQL) Read

func (i *InSQL) Read() error

Read -.

func (*InSQL) Save

func (i *InSQL) Save() error

Save -.

type LabelError

type LabelError struct {
	Err   error
	Label string // метка должна быть в верхнем регистре
}

LabelError описывает ошибку с дополнительной меткой.

func (*LabelError) Error

func (le *LabelError) Error() string

Error добавляет поддержку интерфейса error для типа LabelError.

func (*LabelError) Is

func (le *LabelError) Is(err error) bool

Is .

func (*LabelError) Unwrap

func (le *LabelError) Unwrap() error

Unwrap .

type TimeError

type TimeError struct {
	Time time.Time
	Err  error
}

TimeError предназначен для ошибок с фиксацией времени возникновения.

func (*TimeError) Error

func (te *TimeError) Error() string

Error добавляет поддержку интерфейса error для типа TimeError.

func (*TimeError) Is

func (te *TimeError) Is(err error) bool

Is .

func (*TimeError) Unwrap

func (te *TimeError) Unwrap() error

Unwrap .

Jump to

Keyboard shortcuts

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