Documentation ¶
Index ¶
Constants ¶
View Source
const ( ColAmount = "amount" ColReferredBy = "referred_by" ColLevel = "level" ColAnonymousID = "anonymous_id" ColIsVerified = "is_verified" )
View Source
const ( StatusInfinity = "infinity" StatusActive = "active" StatusAwaiting = "awaiting" StatusRewarded = "rewarded" StatusConsumed = "consumed" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Balance ¶
type Balance struct { Nullifier string `db:"nullifier"` Amount int64 `db:"amount"` CreatedAt int32 `db:"created_at"` UpdatedAt int32 `db:"updated_at"` ReferredBy *string `db:"referred_by"` Level int `db:"level"` AnonymousID *string `db:"anonymous_id"` IsVerified bool `db:"is_verified"` Rank *int `db:"rank"` }
type BalancesQ ¶
type BalancesQ interface { New() BalancesQ Insert(Balance) error Update(map[string]any) error Page(*pgdb.OffsetPageParams) BalancesQ Select() ([]Balance, error) Get() (*Balance, error) // GetWithRank returns balance with rank, filtered by nullifier. No other filters can be applied. GetWithRank(nullifier string) (*Balance, error) SelectWithRank() ([]Balance, error) // WithoutPassportEvent returns balances which already // have scanned passport, but there no claimed events // for this. Filters are not applied. WithoutPassportEvent() ([]WithoutPassportEventBalance, error) WithoutReferralEvent() ([]ReferredReferrer, error) FilterByNullifier(...string) BalancesQ FilterDisabled() BalancesQ FilterByAnonymousID(id string) BalancesQ }
type Event ¶
type Event struct { ID string `db:"id"` Nullifier string `db:"nullifier"` Type string `db:"type"` Status EventStatus `db:"status"` CreatedAt int32 `db:"created_at"` UpdatedAt int32 `db:"updated_at"` Meta Jsonb `db:"meta"` PointsAmount *int64 `db:"points_amount"` ExternalID sql.NullString `db:"external_id"` // hidden from client }
type EventStatus ¶
type EventStatus string
const ( EventOpen EventStatus = "open" EventFulfilled EventStatus = "fulfilled" EventClaimed EventStatus = "claimed" )
func (EventStatus) String ¶
func (s EventStatus) String() string
type EventTypesQ ¶
type EventsQ ¶
type EventsQ interface { New() EventsQ Insert(...Event) error Update(status EventStatus, meta json.RawMessage, points *int64) (*Event, error) Delete() (rowsAffected int64, err error) Transaction(func() error) error Page(*pgdb.OffsetPageParams) EventsQ Select() ([]Event, error) Get() (*Event, error) // Count returns the total number of events that match filters. Page is not // applied to this method. Count() (int, error) // SelectReopenable returns events matching criteria: there are no open or // fulfilled events of this type for a specific user. SelectReopenable() ([]ReopenableEvent, error) // SelectAbsentTypes returns events matching criteria: there are no events of // this type for a specific user. Filters are not applied to this selection. SelectAbsentTypes(allTypes ...string) ([]ReopenableEvent, error) FilterByID(...string) EventsQ FilterByNullifier(string) EventsQ FilterByStatus(...EventStatus) EventsQ FilterByType(...string) EventsQ FilterByNotType(types ...string) EventsQ FilterByUpdatedAtBefore(int64) EventsQ FilterByExternalID(string) EventsQ FilterInactiveNotClaimed(types ...string) EventsQ }
type ReferralsQ ¶
type ReferralsQ interface { New() ReferralsQ Insert(...Referral) error Select() ([]Referral, error) Get(id string) (*Referral, error) Count() (uint64, error) Consume(id string) error WithStatus() ReferralsQ Update(usageLeft int, infinity bool) (*Referral, error) FilterByNullifier(string) ReferralsQ FilterInactive() ReferralsQ }
type ReferredReferrer ¶
type ReopenableEvent ¶
ReopenableEvent is a pair that is sufficient to build a new open event with a specific type for a user
type WithoutPassportEventBalance ¶
type WithoutPassportEventBalance struct { Balance EventID string `db:"event_id"` EventStatus EventStatus `db:"event_status"` }
Click to show internal directories.
Click to hide internal directories.