storage

package
v1.0.2 Latest Latest
Warning

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

Go to latest
Published: Mar 6, 2022 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrUniqueViolation = errors.New("unique violation")
	ErrNotFound        = errors.New("not found")
)

Storage layer errors

Functions

func ErrFromCode

func ErrFromCode(pqerr error) error

ErrFromCode parses Postgres error code and returns corresponding storage error for non Postgres related or unknown errors returns pqerr

more error codes: https://github.com/omeid/pgerror/blob/master/pgerror.go

Types

type ActivityStats

type ActivityStats struct {
	ActiveHelpsCount int `db:"helps"`
	ActiveSubsCount  int `db:"subs"`
}

type Categories

type Categories []CategoryNames

func (*Categories) Scan

func (cs *Categories) Scan(src interface{}) error

type Category

type Category struct {
	ID     uuid.UUID `db:"id"`
	NameUA string    `db:"name_ua"`
	NameRU string    `db:"name_ru"`
	NameEN string    `db:"name_en"`
}

type CategoryNames

type CategoryNames struct {
	NameUA string `json:"name_ua"`
	NameRU string `json:"name_ru"`
	NameEN string `json:"name_en"`
}

type Config

type Config struct {
	DSN string `yaml:"dsn"`
}

type Help

type Help struct {
	ID                   uuid.UUID  `db:"id"`
	CreatorID            uuid.UUID  `db:"creator_id"`
	Categories           Categories `db:"categories"`
	LocalityPublicNameEN string     `db:"loc_public_name_en"`
	LocalityPublicNameRU string     `db:"loc_public_name_ru"`
	LocalityPublicNameUA string     `db:"loc_public_name_ua"`
	Language             string     `db:"language"`
	Description          string     `db:"description"`
	CreatedAt            time.Time  `db:"created_at"`
	UpdatedAt            *time.Time `db:"updated_at"`
	DeletedAt            *time.Time `db:"deleted_at"`
}

type HelpInsert

type HelpInsert struct {
	CreatorID   uuid.UUID
	CategoryIDs []uuid.UUID
	LocalityID  int
	Description string
}

type Interface

type Interface interface {
	MigrateUp() error

	UpsertUser(context.Context, *User) (*User, error)
	SelectLocalityRegions(context.Context, string) ([]*LocalityRegion, error)
	SelectCategories(context.Context) ([]*Category, error)

	InsertHelp(context.Context, *HelpInsert) (uuid.UUID, error)
	SelectHelpByID(context.Context, uuid.UUID) (*Help, error)
	SelectHelpsByUser(context.Context, uuid.UUID) ([]*Help, error)
	SelectHelpsByLocalityCategory(context.Context, int, uuid.UUID) ([]*Help, error)
	SelectHelpsBySubscription(ctx context.Context, sid uuid.UUID) ([]*Help, error)
	SelectHelpsCountByUser(context.Context, uuid.UUID) (int, error)
	DeleteHelp(ctx context.Context, uuid2 uuid.UUID) error
	SelectExpiredHelps(context.Context, time.Time) ([]*Help, error)
	KeepHelp(ctx context.Context, requestID uuid.UUID) error

	InsertSubscription(context.Context, *SubscriptionInsert) error
	SelectSubscriptionsByUser(context.Context, uuid.UUID) ([]*SubscriptionValue, error)
	SelectSubscriptionsByLocalityCategories(context.Context, int, []uuid.UUID) ([]*SubscriptionValue, error)
	SelectSubscriptionsCountByUser(context.Context, uuid.UUID) (int, error)
	DeleteSubscription(context.Context, uuid.UUID) error

	SelectActivityStats(context.Context) (*ActivityStats, error)
	SelectSubscriptionExists(context.Context, uuid.UUID) (bool, error)
}

type LocalityRegion

type LocalityRegion struct {
	ID         int    `db:"id"`
	Leven      int    `db:"leven"`
	Type       string `db:"type"`
	Name       string `db:"public_name_ua"`
	RegionName string `db:"region_public_name_ua"`
}

type Postgres

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

func NewPostgres

func NewPostgres(c *Config) (*Postgres, error)

func (*Postgres) DeleteHelp

func (p *Postgres) DeleteHelp(ctx context.Context, u uuid.UUID) error

func (*Postgres) DeleteSubscription

func (p *Postgres) DeleteSubscription(ctx context.Context, sid uuid.UUID) error

func (*Postgres) InsertHelp

func (p *Postgres) InsertHelp(ctx context.Context, rq *HelpInsert) (uuid.UUID, error)

func (*Postgres) InsertSubscription

func (p *Postgres) InsertSubscription(ctx context.Context, s *SubscriptionInsert) error

func (*Postgres) KeepHelp

func (p *Postgres) KeepHelp(ctx context.Context, requestID uuid.UUID) error

func (*Postgres) MigrateUp

func (p *Postgres) MigrateUp() error

func (*Postgres) SelectActivityStats

func (p *Postgres) SelectActivityStats(ctx context.Context) (*ActivityStats, error)

func (*Postgres) SelectCategories

func (p *Postgres) SelectCategories(ctx context.Context) ([]*Category, error)

func (*Postgres) SelectExpiredHelps

func (p *Postgres) SelectExpiredHelps(ctx context.Context, t time.Time) ([]*Help, error)

func (*Postgres) SelectHelpByID

func (p *Postgres) SelectHelpByID(ctx context.Context, uid uuid.UUID) (*Help, error)

func (*Postgres) SelectHelpsByLocalityCategory

func (p *Postgres) SelectHelpsByLocalityCategory(ctx context.Context, localityID int, cid uuid.UUID) ([]*Help, error)

func (*Postgres) SelectHelpsBySubscription

func (p *Postgres) SelectHelpsBySubscription(ctx context.Context, sid uuid.UUID) ([]*Help, error)

func (*Postgres) SelectHelpsByUser

func (p *Postgres) SelectHelpsByUser(ctx context.Context, uid uuid.UUID) ([]*Help, error)

func (*Postgres) SelectHelpsCountByUser

func (p *Postgres) SelectHelpsCountByUser(ctx context.Context, uid uuid.UUID) (int, error)

func (*Postgres) SelectLocalityRegions

func (p *Postgres) SelectLocalityRegions(ctx context.Context, s string) ([]*LocalityRegion, error)

func (*Postgres) SelectSubscriptionExists

func (p *Postgres) SelectSubscriptionExists(ctx context.Context, sid uuid.UUID) (bool, error)

func (*Postgres) SelectSubscriptionsByLocalityCategories

func (p *Postgres) SelectSubscriptionsByLocalityCategories(ctx context.Context, l int, cids []uuid.UUID) ([]*SubscriptionValue, error)

func (*Postgres) SelectSubscriptionsByUser

func (p *Postgres) SelectSubscriptionsByUser(ctx context.Context, uid uuid.UUID) ([]*SubscriptionValue, error)

func (*Postgres) SelectSubscriptionsCountByUser

func (p *Postgres) SelectSubscriptionsCountByUser(ctx context.Context, uid uuid.UUID) (int, error)

func (*Postgres) UpsertUser

func (p *Postgres) UpsertUser(ctx context.Context, user *User) (*User, error)

type SubscriptionInsert

type SubscriptionInsert struct {
	CreatorID  uuid.UUID
	CategoryID uuid.UUID
	LocalityID int
}

type SubscriptionValue

type SubscriptionValue struct {
	ID                   uuid.UUID `db:"id"`
	CreatorID            uuid.UUID `db:"creator_id"`
	CategoryID           uuid.UUID `db:"category_id"`
	ChatID               int64     `db:"chat_id"`
	Language             string    `db:"language"`
	CategoryNameEN       string    `db:"name_en"`
	CategoryNameRU       string    `db:"name_ru"`
	CategoryNameUA       string    `db:"name_ua"`
	LocalityPublicNameEN string    `db:"public_name_en"`
	LocalityPublicNameRU string    `db:"public_name_ru"`
	LocalityPublicNameUA string    `db:"public_name_ua"`
	CreatedAt            time.Time `db:"created_at"`
}

type User

type User struct {
	ID        uuid.UUID `db:"id"`
	TgID      int       `db:"tg_id"`
	ChatID    int64     `db:"chat_id"`
	Name      string    `db:"name"`
	Language  string    `db:"language"`
	CreatedAt time.Time `db:"created_at"`
	UpdatedAt time.Time `db:"updated_at"`
}

Jump to

Keyboard shortcuts

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