Something went wrong. Try again.
home to your local SPACEGIRL 💫 arimelody.space
Something went wrong. Try again.
1.6 kB · 67 lines
Go
at dev
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768package controller
import ( "arimelody-web/model" "math/rand" "strings" "time"
"github.com/jmoiron/sqlx")
var inviteChars = []byte("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
func GetInvite(db *sqlx.DB, code string) (*model.Invite, error) { invite := model.Invite{}
err := db.Get(&invite, "SELECT * FROM invite WHERE code=$1", code) if err != nil { if strings.Contains(err.Error(), "no rows") { return nil, nil } return nil, err }
return &invite, nil}
func CreateInvite(db *sqlx.DB, length int, lifetime time.Duration) (*model.Invite, error) { invite := model.Invite{ CreatedAt: time.Now(), ExpiresAt: time.Now().Add(lifetime), } code := []byte{} for i := 0; i < length; i++ { code = append(code, inviteChars[rand.Intn(len(inviteChars) - 1)]) } invite.Code = string(code)
_, err := db.Exec( "INSERT INTO invite (code, created_at, expires_at) " + "VALUES ($1, $2, $3)", invite.Code, invite.CreatedAt, invite.ExpiresAt, ) if err != nil { return nil, err }
return &invite, nil}
func DeleteInvite(db *sqlx.DB, code string) error { _, err := db.Exec("DELETE FROM invite WHERE code=$1", code) return err}
func DeleteAllInvites(db *sqlx.DB) error { _, err := db.Exec("DELETE FROM invite") return err}
func DeleteExpiredInvites(db *sqlx.DB) error { _, err := db.Exec("DELETE FROM invite WHERE expires_at<current_timestamp") return err}