models

package
v0.0.0-...-39a8fbd Latest Latest
Warning

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

Go to latest
Published: Apr 20, 2024 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	GenderEnumChildren = "1"
	GenderEnumWomen    = "2"
	GenderEnumMen      = "3"
)
View Source
const (
	MAIL_RETRY_NEVER    = 0
	MAIL_RETRY_NEXT_DAY = 1
	MAIL_RETRY_TWO_DAYS = 2
)
View Source
const (
	PaymentStatusEnumComplete = stripe.CheckoutSessionStatusComplete
	PaymentStatusEnumOpen     = stripe.CheckoutSessionStatusOpen
	PaymentStatusEnumExpired  = stripe.CheckoutSessionStatusExpired
)
View Source
const (
	SizeEnumBaby          = "1"
	SizeEnum1_4YearsOld   = "2"
	SizeEnum5_12YearsOld  = "3"
	SizeEnumWomenSmall    = "4"
	SizeEnumWomenMedium   = "5"
	SizeEnumWomenLarge    = "6"
	SizeEnumWomenPlusSize = "7"
	SizeEnumMenSmall      = "8"
	SizeEnumMenMedium     = "9"
	SizeEnumMenLarge      = "A"
	SizeEnumMenPlusSize   = "B"
)
View Source
const ChainResponseSQLSelect = `` /* 203-byte string literal not displayed */

Selects chain; id, uid, name, description, address, latitude, longitude, radius, sizes, genders, published, open_to_new_members

View Source
const EventGetSql = `` /* 1061-byte string literal not displayed */

Variables

View Source
var ErrAddUserChainsToObject = errors.New("Unable to add associated loops to user")
View Source
var ErrChainNotFound = errors.New("Chain not found")
View Source
var ErrGenderInvalid = errors.New("Invalid gender enum")
View Source
var ErrMailLastRetry = fmt.Errorf("Last failed attempt")
View Source
var ErrRouteInvalid = errors.New("Invalid route")
View Source
var ErrSizeInvalid = errors.New("Invalid size enum")
View Source
var ErrUserNotFound = errors.New("User not found")

Functions

func ChainCheckIfExist

func ChainCheckIfExist(db *gorm.DB, ChainUID string, checkIfIsOpenToNewMembers bool) (chainID uint, found bool, err error)

func ChainGetNamesByIDs

func ChainGetNamesByIDs(db *gorm.DB, chainIDs ...uint) ([]string, error)

func UserChainCheckIfRelationExist

func UserChainCheckIfRelationExist(db *gorm.DB, ChainID uint, UserID uint, checkIfIsApproved bool) (userChainID uint, found bool, err error)

func UserCheckEmail

func UserCheckEmail(db *gorm.DB, userEmail string) (userID uint, found bool, err error)

func UserOnesignalDelete

func UserOnesignalDelete(db *gorm.DB, playerID string) error

func UserOnesignalGetAllPlayerIDs

func UserOnesignalGetAllPlayerIDs(db *gorm.DB, userIDs []uint) ([]string, error)

func UserOnesignalPut

func UserOnesignalPut(db *gorm.DB, userID uint, onesignalID, playerID string) error

func ValidateAllGenderEnum

func ValidateAllGenderEnum(arr []string) bool

func ValidateAllRouteUserUIDs

func ValidateAllRouteUserUIDs(db *gorm.DB, chainID uint, userUIDs []string) bool

func ValidateAllSizeEnum

func ValidateAllSizeEnum(arr []string) bool

Types

type Bag

type Bag struct {
	ID                    uint        `json:"id"`
	Number                string      `json:"number"`
	Color                 string      `json:"color"`
	UserChainID           uint        `json:"-"`
	ChainUID              string      `json:"chain_uid" gorm:"-:migration;<-:false"`
	UserUID               string      `json:"user_uid" gorm:"-:migration;<-:false"`
	UpdatedAt             time.Time   `json:"updated_at"`
	LastNotifiedAt        zero.Time   `json:"-"`
	LastUserEmailToUpdate zero.String `json:"-"`
}

type BulkyItem

type BulkyItem struct {
	ID          uint      `json:"id"`
	Title       string    `json:"title"`
	Message     string    `json:"message"`
	ImageUrl    string    `json:"image_url"`
	UserChainID uint      `json:"-"`
	ChainUID    string    `json:"chain_uid" gorm:"-:migration;<-:false"`
	UserUID     string    `json:"user_uid" gorm:"-:migration;<-:false"`
	CreatedAt   time.Time `json:"created_at"`
}

type Chain

type Chain struct {
	ID                            uint
	UID                           string      `gorm:"uniqueIndex"`
	FID                           zero.String `gorm:"column:fid"`
	Name                          string
	Description                   string
	Address                       string
	CountryCode                   string
	Latitude                      float64
	Longitude                     float64
	Radius                        float32
	Published                     bool
	OpenToNewMembers              bool
	RulesOverride                 string
	HeadersOverride               string
	Sizes                         []string `gorm:"serializer:json"`
	Genders                       []string `gorm:"serializer:json"`
	UserChains                    []UserChain
	CreatedAt                     time.Time
	UpdatedAt                     time.Time
	DeletedAt                     zero.Time
	Theme                         string
	IsAppDisabled                 bool
	RoutePrivacy                  int
	LastAbandonedAt               sql.NullTime
	LastAbandonedRecruitmentEmail sql.NullTime
}

func (*Chain) ClearAllLastNotifiedIsUnapprovedAt

func (c *Chain) ClearAllLastNotifiedIsUnapprovedAt(db *gorm.DB) error

func (*Chain) Delete

func (c *Chain) Delete(db *gorm.DB) error

func (*Chain) GetRouteOrderByUserUID

func (c *Chain) GetRouteOrderByUserUID(db *gorm.DB) ([]string, error)

func (*Chain) GetTotals

func (c *Chain) GetTotals(db *gorm.DB) *ChainTotals

func (*Chain) GetUserContactData

func (c *Chain) GetUserContactData(db *gorm.DB) ([]UserContactData, error)

func (*Chain) RemoveUser

func (c *Chain) RemoveUser(db *gorm.DB, userID uint) (err error)

func (*Chain) RemoveUserUnapproved

func (c *Chain) RemoveUserUnapproved(db *gorm.DB, userID uint) (err error)

func (*Chain) SetRouteOrderByUserUIDs

func (c *Chain) SetRouteOrderByUserUIDs(db *gorm.DB, userUIDs []string) error

type ChainResponse

type ChainResponse struct {
	UID              string   `json:"uid" gorm:"chains.uid"`
	Name             string   `json:"name" gorm:"chains.name"`
	Description      string   `json:"description" gorm:"chains.description"`
	Address          string   `json:"address" gorm:"chains.address"`
	Latitude         float64  `json:"latitude" gorm:"chains.latitude"`
	Longitude        float64  `json:"longitude" gorm:"chains.longitude"`
	Radius           float32  `json:"radius" gorm:"chains.radius"`
	Sizes            []string `json:"sizes" gorm:"chains.sizes;serializer:json"`
	Genders          []string `json:"genders" gorm:"chains.genders;serializer:json"`
	Published        bool     `json:"published" gorm:"chains.published"`
	OpenToNewMembers bool     `json:"open_to_new_members" gorm:"chains.open_to_new_members"`
	TotalMembers     *int     `json:"total_members,omitempty" gorm:"total_members"`
	TotalHosts       *int     `json:"total_hosts,omitempty" gorm:"total_hosts"`
	RulesOverride    *string  `json:"rules_override,omitempty" gorm:"chains.rules_override"`
	HeadersOverride  *string  `json:"headers_override,omitempty" gorm:"chains.headers_override"`
	Theme            *string  `json:"theme,omitempty" gorm:"chains.theme"`
	IsAppDisabled    *bool    `json:"is_app_disabled,omitempty" gorm:"chains.is_app_disabled"`
	RoutePrivacy     *int     `json:"route_privacy,omitempty" gorm:"chains.route_privacy"`
}

type ChainTotals

type ChainTotals struct {
	TotalMembers int `gorm:"total_members"`
	TotalHosts   int `gorm:"total_hosts"`
}

type Event

type Event struct {
	ID             uint        `json:"-"`
	UID            string      `gorm:"uniqueIndex" json:"uid"`
	Name           string      `json:"name"`
	Description    string      `json:"description"`
	Latitude       float64     `json:"latitude"`
	Longitude      float64     `json:"longitude"`
	Address        string      `json:"address"`
	PriceValue     float64     `json:"price_value"`
	PriceCurrency  zero.String `json:"price_currency"`
	Link           string      `json:"link"`
	Date           time.Time   `json:"date"`
	DateEnd        null.Time   `json:"date_end"`
	Genders        []string    `gorm:"serializer:json" json:"genders"`
	ChainID        zero.Int    `json:"-"`
	ChainUID       zero.String `json:"chain_uid" gorm:"-:migration;<-:false"`
	UserID         uint        `json:"-"`
	CreatedAt      time.Time   `json:"-"`
	UpdatedAt      time.Time   `json:"-"`
	UserUID        zero.String `json:"user_uid" gorm:"-:migration;<-:false"`
	UserName       zero.String `json:"user_name" gorm:"-:migration;<-:false"`
	UserEmail      zero.String `json:"user_email" gorm:"-:migration;<-:false"`
	ImageUrl       string      `json:"image_url"`
	ImageDeleteUrl string      `json:"-"`
	ChainName      zero.String `json:"chain_name" gorm:"-:migration;<-:false"`
}

type EventPrice

type EventPrice struct {
	Value    float64 `json:"value"`
	Currency string  `json:"currency"`
}

type Mail

type Mail struct {
	ID               uint
	SenderName       string
	SenderAddress    string
	ToName           string
	ToAddress        string
	Subject          string
	Body             string
	Err              null.String
	MaxRetryAttempts int
	NextRetryAttempt int
	CreatedAt        time.Time
}

func MailGetDueForResend

func MailGetDueForResend(db *gorm.DB) ([]*Mail, error)

func (*Mail) AddToQueue

func (m *Mail) AddToQueue(db *gorm.DB) error

func (*Mail) Delete

func (m *Mail) Delete(db *gorm.DB) error

func (Mail) TableName

func (m Mail) TableName() string

func (*Mail) UpdateNextRetryAttempt

func (m *Mail) UpdateNextRetryAttempt(db *gorm.DB, err error) error

type Newsletter

type Newsletter struct {
	ID        uint
	Email     string `gorm:"uniqueIndex"`
	Name      string
	Verified  bool
	CreatedAt time.Time
}

func (*Newsletter) CreateOrUpdate

func (n *Newsletter) CreateOrUpdate(db *gorm.DB) error

This requires the following values to be populated: Email, Name, Verified

type Payment

type Payment struct {
	ID  uint
	FID sql.NullString `gorm:"column:fid"`
	// Euro cents
	Amount                float32
	Email                 string
	IsRecurring           bool
	SessionStripeID       zero.String `gorm:"uniqueIndex"`
	CustomerStripeID      string
	PaymentIntentStripeID string
	Status                string
	CreatedAt             time.Time
	UpdatedAt             time.Time
}

type User

type User struct {
	ID                    uint            `json:"-"`
	UID                   string          `json:"uid" gorm:"uniqueIndex"`
	FID                   zero.String     `json:"-" gorm:"column:fid"`
	Email                 zero.String     `json:"email" gorm:"unique"`
	IsEmailVerified       bool            `json:"is_email_verified"`
	IsRootAdmin           bool            `json:"is_root_admin"`
	PausedUntil           null.Time       `json:"paused_until"`
	Name                  string          `json:"name"`
	PhoneNumber           string          `json:"phone_number"`
	Address               string          `json:"address"`
	Sizes                 []string        `json:"sizes" gorm:"serializer:json"`
	LastSignedInAt        zero.Time       `json:"-"`
	LastPokeAt            zero.Time       `json:"-"`
	UserToken             []UserToken     `json:"-"`
	Event                 []Event         `json:"-"`
	Chains                []UserChain     `json:"chains"`
	UserOnesignal         []UserOnesignal `json:"-"`
	CreatedAt             time.Time       `json:"-"`
	UpdatedAt             time.Time       `json:"-"`
	I18n                  string          `json:"i18n"`
	JwtTokenPepper        int             `json:"-" `
	Latitude              float64         `json:"-"`
	Longitude             float64         `json:"-"`
	AcceptedTOH           bool            `json:"-"`
	AcceptedDPA           bool            `json:"-"`
	AcceptedTOHJSON       *bool           `json:"accepted_toh,omitempty" gorm:"-:migration;<-:false"`
	AcceptedDPAJSON       *bool           `json:"accepted_dpa,omitempty" gorm:"-:migration;<-:false"`
	NotificationChainUIDs []string        `json:"notification_chain_uids,omitempty" gorm:"-"`
}

func UserGetAllUsersByChain

func UserGetAllUsersByChain(db *gorm.DB, chainID uint) ([]User, error)

func UserGetByEmail

func UserGetByEmail(db *gorm.DB, userEmail string) (*User, error)

func UserGetByUID

func UserGetByUID(db *gorm.DB, userUID string, checkEmailVerification bool) (*User, error)

Expects the userUID not to be empty

func UserOmitData

func UserOmitData(db *gorm.DB, chain *Chain, users []User, authUserID uint) ([]User, error)

func (*User) AcceptLegal

func (u *User) AcceptLegal(db *gorm.DB) error

func (*User) AddNotificationChainUIDs

func (u *User) AddNotificationChainUIDs(db *gorm.DB) error

func (*User) AddUserChainsToObject

func (u *User) AddUserChainsToObject(db *gorm.DB) error

func (*User) DeleteUserChainDependencies

func (u *User) DeleteUserChainDependencies(db *gorm.DB, chainID uint) (err error)

func (*User) DeleteUserChainDependenciesAllChains

func (u *User) DeleteUserChainDependenciesAllChains(db *gorm.DB) (err error)

func (*User) FindLinkedEventByUID

func (u *User) FindLinkedEventByUID(db *gorm.DB, eventUID string) (e *Event, err error)

func (*User) IsAnyChainAdmin

func (u *User) IsAnyChainAdmin() (isAnyChainAdmin bool)

This required user to have run AddUserChainsToObject before this

func (*User) IsPartOfChain

func (u *User) IsPartOfChain(chainUID string) (ok, isChainAdmin bool)

This required user to have run AddUserChainsToObject before this

func (*User) LastPokeTooRecent

func (u *User) LastPokeTooRecent() bool

func (*User) SetAcceptedLegal

func (u *User) SetAcceptedLegal()

func (*User) SetLastPokeToNow

func (u *User) SetLastPokeToNow(db *gorm.DB) error

type UserChain

type UserChain struct {
	ID                         uint        `json:"-"`
	UserID                     uint        `json:"-" gorm:"index"`
	UserUID                    string      `json:"user_uid" gorm:"-:migration;<-:false"`
	ChainID                    uint        `json:"-"`
	ChainUID                   string      `json:"chain_uid" gorm:"-:migration;<-:false"`
	IsChainAdmin               bool        `json:"is_chain_admin"`
	CreatedAt                  time.Time   `json:"created_at"`
	IsApproved                 bool        `json:"is_approved"`
	LastNotifiedIsUnapprovedAt zero.Time   `json:"-"`
	RouteOrder                 int         `json:"-"`
	IsPaused                   bool        `json:"is_paused"`
	Bags                       []Bag       `json:"-"`
	Bulky                      []BulkyItem `json:"-"`
}

func UserChainGetIndirectByChain

func UserChainGetIndirectByChain(db *gorm.DB, chainID uint) ([]UserChain, error)

type UserContactData

type UserContactData struct {
	Name       string      `gorm:"name"`
	Email      zero.String `gorm:"email"`
	I18n       string      `gorm:"i18n"`
	ChainName  string      `gorm:"chain_name"`
	IsApproved bool        `gorm:"is_approved"`
}

func UserGetAdminsByChain

func UserGetAdminsByChain(db *gorm.DB, chainId ...uint) ([]UserContactData, error)

type UserOnesignal

type UserOnesignal struct {
	ID          uint
	PlayerID    string `gorm:"uniqueIndex"`
	OnesignalID string `gorm:"unique"`
	UserID      uint
}

type UserToken

type UserToken struct {
	ID        uint
	Token     string
	Verified  bool
	UserID    uint
	CreatedAt time.Time
}

Jump to

Keyboard shortcuts

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