data

package
v0.0.0-...-471a359 Latest Latest
Warning

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

Go to latest
Published: Mar 21, 2024 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ExamplePollIDValid         = "e9da0ad7-6065-40de-8398-2514ce9c566f"
	ExamplePollIDExpiredPoll   = "7a818efb-b94d-49ea-af0e-5f1c8999c1b5"
	ExamplePollIDExpiredNotSet = "e4dd6db9-fa83-45d2-81dd-1f93019a25a2"
	ExamplePollIDAfterVote     = "6e3e617f-b5e6-4627-a2db-c72e29ec1729"
	ExamplePollIDAfterDeadline = "0d5edfad-ba7f-4ddc-a455-4f25ca09bfdd"
	ExamplePollIDVotingStarted = "0d5edfad-ba7f-4ddc-a455-4f25ca09bfss"
	ExampleOptionID1           = "65d7c012-f3f9-43f5-a62c-12ab516c6124"
	ExampleOptionID2           = "b85b14b5-7da6-47d0-8518-07033e199a50"
	ExampleOptionID3           = "b8168cce-4044-4c23-9506-b41915784166"
)
View Source
var ErrRecordNotFound = errors.New("record not found")

Functions

func ValidateFilters

func ValidateFilters(v *validator.Validator, f Filters)

func ValidatePoll

func ValidatePoll(v *validator.Validator, poll *Poll)

func ValidateTokenPlaintext

func ValidateTokenPlaintext(v *validator.Validator, tokenPlaintext string)

Types

type ExpiresAt

type ExpiresAt struct{ time.Time }

func (ExpiresAt) MarshalJSON

func (e ExpiresAt) MarshalJSON() ([]byte, error)

type Filters

type Filters struct {
	Page         int
	PageSize     int
	Sort         string
	SortSafelist []string
}

type Metadata

type Metadata struct {
	CurrentPage  int `json:"current_page,omitempty"`
	PageSize     int `json:"page_size,omitempty"`
	FirstPage    int `json:"first_page,omitempty"`
	LastPage     int `json:"last_page,omitempty"`
	TotalRecords int `json:"total_records,omitempty"`
}

type MockPollModel

type MockPollModel struct {
	DB *pgxpool.Pool
}

func (MockPollModel) CheckToken

func (p MockPollModel) CheckToken(tokenPlaintext string) (string, error)

func (MockPollModel) Delete

func (p MockPollModel) Delete(id string) error

func (MockPollModel) Get

func (p MockPollModel) Get(id string) (*Poll, error)

func (MockPollModel) GetAll

func (p MockPollModel) GetAll(search string, filters Filters) ([]*Poll, Metadata, error)

func (MockPollModel) GetVotedIPs

func (p MockPollModel) GetVotedIPs(pollID string) ([]*net.IP, error)

func (MockPollModel) Insert

func (p MockPollModel) Insert(poll *Poll, tokenHash []byte) error

func (MockPollModel) Update

func (p MockPollModel) Update(poll *Poll) error

type MockPollOptionModel

type MockPollOptionModel struct {
	DB *pgxpool.Pool
}

func (MockPollOptionModel) Delete

func (p MockPollOptionModel) Delete(optionID string) error

func (MockPollOptionModel) GetResults

func (p MockPollOptionModel) GetResults(pollID string) ([]*PollOption, error)

func (MockPollOptionModel) Insert

func (p MockPollOptionModel) Insert(option *PollOption, pollID string) error

func (MockPollOptionModel) UpdatePosition

func (p MockPollOptionModel) UpdatePosition(options []*PollOption) error

func (MockPollOptionModel) UpdateValue

func (p MockPollOptionModel) UpdateValue(option *PollOption) error

func (MockPollOptionModel) Vote

func (p MockPollOptionModel) Vote(optionID string, pollID string, ip string) error

type Models

type Models struct {
	Polls       Polls
	PollOptions PollOptions
}

func NewMockModels

func NewMockModels() Models

func NewModels

func NewModels(db *pgxpool.Pool) Models

type Poll

type Poll struct {
	ID                string        `json:"id"`
	Question          string        `json:"question"`
	Description       string        `json:"description"`
	Options           []*PollOption `json:"options"`
	CreatedAt         time.Time     `json:"created_at"`
	UpdatedAt         time.Time     `json:"updated_at"`
	ExpiresAt         ExpiresAt     `json:"expires_at"`
	ResultsVisibility string        `json:"results_visibility"`
	IsPrivate         bool          `json:"is_private"`
	Token             string        `json:"token,omitempty"`
}

type PollModel

type PollModel struct {
	DB *pgxpool.Pool
}

func (PollModel) CheckToken

func (p PollModel) CheckToken(tokenPlaintext string) (string, error)

func (PollModel) Delete

func (p PollModel) Delete(id string) error

func (PollModel) Get

func (p PollModel) Get(id string) (*Poll, error)

func (PollModel) GetAll

func (p PollModel) GetAll(search string, filters Filters) ([]*Poll, Metadata, error)

func (PollModel) GetVotedIPs

func (p PollModel) GetVotedIPs(pollID string) ([]*net.IP, error)

func (PollModel) Insert

func (p PollModel) Insert(poll *Poll, tokenHash []byte) error

func (PollModel) Update

func (p PollModel) Update(poll *Poll) error

type PollOption

type PollOption struct {
	ID    string `json:"id"`
	Value string `json:"value"`
	// Position of option in the list, starting at 0
	Position  int `json:"position"`
	VoteCount int `json:"-"`
}

type PollOptionModel

type PollOptionModel struct {
	DB *pgxpool.Pool
}

func (PollOptionModel) Delete

func (p PollOptionModel) Delete(optionID string) error

func (PollOptionModel) GetResults

func (p PollOptionModel) GetResults(pollID string) ([]*PollOption, error)

func (PollOptionModel) Insert

func (p PollOptionModel) Insert(option *PollOption, pollID string) error

func (PollOptionModel) UpdatePosition

func (p PollOptionModel) UpdatePosition(options []*PollOption) error

func (PollOptionModel) UpdateValue

func (p PollOptionModel) UpdateValue(option *PollOption) error

func (PollOptionModel) Vote

func (p PollOptionModel) Vote(optionID string, pollID string, ip string) error

type PollOptions

type PollOptions interface {
	Insert(option *PollOption, pollID string) error
	UpdateValue(option *PollOption) error
	UpdatePosition(options []*PollOption) error
	Vote(optionID string, pollID string, ip string) error
	Delete(optionID string) error
	GetResults(pollID string) ([]*PollOption, error)
}

type Polls

type Polls interface {
	Insert(poll *Poll, tokenHash []byte) error
	Get(id string) (*Poll, error)
	Update(poll *Poll) error
	Delete(id string) error
	GetAll(search string, filters Filters) ([]*Poll, Metadata, error)
	GetVotedIPs(pollID string) ([]*net.IP, error)
	CheckToken(tokenPlaintext string) (string, error)
}

type Token

type Token struct {
	Plaintext string
	Hash      []byte
}

func GenerateToken

func GenerateToken() (*Token, error)

Jump to

Keyboard shortcuts

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