2025-04-28 12:38:15 -05:00
|
|
|
package user
|
|
|
|
|
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
|
|
|
|
"gorm.io/gorm"
|
|
|
|
)
|
|
|
|
|
|
|
|
type User struct {
|
|
|
|
gorm.Model
|
|
|
|
Id string `json:"id"`
|
|
|
|
DisplayName string `json:"display_name"`
|
|
|
|
Username string `json:"user_name"`
|
|
|
|
Avatar string `json:"avatar"`
|
|
|
|
AvatarDecoration string `json:"avatar_decoration"`
|
|
|
|
LoginToken string `json:"login_token"`
|
|
|
|
LoggedIn bool `json:"logged_in"`
|
|
|
|
ApiKey []struct {
|
|
|
|
Name string `gorm:"primaryKey uniqueIndex" json:"name"`
|
|
|
|
Key string `json:"key"`
|
|
|
|
} `gorm:"foreignKey:Name" json:"api_key"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func (user *User) Get(db *gorm.DB, id string) {
|
|
|
|
db.Where("id = ?", id).Take(&user)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (user User) Update(db *gorm.DB) error {
|
|
|
|
result := db.Save(&user)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (user User) Create(db *gorm.DB) error {
|
|
|
|
result := db.Create(&user)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2025-04-29 00:42:57 -05:00
|
|
|
func Logout(db *gorm.DB, oauthToken string) {
|
|
|
|
db.Model(&User{}).Where("login_token = ?", oauthToken).Update("logged_in", false)
|
|
|
|
}
|
|
|
|
|
2025-04-28 12:38:15 -05:00
|
|
|
func Exists(db *gorm.DB, id string) bool {
|
|
|
|
var queryUser User
|
|
|
|
result := db.Where("id = ?", id).Take(&queryUser)
|
|
|
|
if errors.Is(result.Error, gorm.ErrRecordNotFound) {
|
|
|
|
return false
|
|
|
|
} else {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetTokenFromUserId(db *gorm.DB, id string) string {
|
|
|
|
var dbUser User
|
|
|
|
result := db.Where("id = ?", id).Select("login_token").Take(&dbUser)
|
|
|
|
if errors.Is(result.Error, gorm.ErrRecordNotFound) {
|
|
|
|
return ""
|
|
|
|
} else {
|
|
|
|
return dbUser.LoginToken
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetLoggedInFromOAuthToken(db *gorm.DB, oauthTokenJSON string) bool {
|
|
|
|
var queryUser User
|
|
|
|
result := db.Where("login_token = ?", oauthTokenJSON).Take(&queryUser)
|
|
|
|
if errors.Is(result.Error, gorm.ErrRecordNotFound) {
|
|
|
|
return false
|
|
|
|
} else {
|
|
|
|
return queryUser.LoggedIn
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetLoggedInFromDiscordId(db *gorm.DB, discordId string) bool {
|
|
|
|
var queryUser User
|
|
|
|
result := db.Where("id = ?", discordId).Take(&queryUser)
|
|
|
|
if errors.Is(result.Error, gorm.ErrRecordNotFound) {
|
|
|
|
return false
|
|
|
|
} else {
|
|
|
|
return queryUser.LoggedIn
|
|
|
|
}
|
|
|
|
}
|