2025-04-21 23:05:50 -05:00
|
|
|
package dbcommands
|
|
|
|
|
|
|
|
import (
|
2025-04-22 16:21:40 -05:00
|
|
|
"errors"
|
2025-04-21 23:05:50 -05:00
|
|
|
"log"
|
|
|
|
|
|
|
|
"gorm.io/driver/sqlite"
|
|
|
|
"gorm.io/gorm"
|
|
|
|
)
|
|
|
|
|
|
|
|
type User struct {
|
|
|
|
gorm.Model
|
2025-04-22 16:21:40 -05:00
|
|
|
Id string
|
|
|
|
DisplayName string
|
|
|
|
Username string
|
|
|
|
Avatar string
|
|
|
|
AvatarDecoration string
|
|
|
|
LoginToken string
|
2025-04-22 19:04:17 -05:00
|
|
|
LoggedIn bool
|
2025-04-21 23:05:50 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
func InitializeDatabase() *gorm.DB {
|
|
|
|
db, err := gorm.Open(sqlite.Open("db/main.db"), &gorm.Config{})
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal("Failed to connect to database.")
|
|
|
|
}
|
|
|
|
db.AutoMigrate(&User{})
|
|
|
|
return db
|
|
|
|
}
|
2025-04-22 16:21:40 -05:00
|
|
|
|
|
|
|
func GetDatabaseUserToken(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 DatabaseUserExists(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
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-04-22 19:04:17 -05:00
|
|
|
func DatabaseUserLoggedIn(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 queryUser.LoggedIn
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-04-22 16:21:40 -05:00
|
|
|
func UpdateDatabaseUser(db *gorm.DB, user User) error {
|
|
|
|
result := db.Save(&user)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func CreateDatabaseUser(db *gorm.DB, user User) error {
|
|
|
|
result := db.Create(&user)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
2025-04-22 19:04:17 -05:00
|
|
|
|
|
|
|
func LogoutDatabaseUser(db *gorm.DB, oauthToken string) {
|
|
|
|
db.Model(&User{}).Where("login_token = ?", oauthToken).Update("logged_in", false)
|
|
|
|
db.Model(&User{}).Where("login_token = ?", oauthToken).Update("login_token", "")
|
|
|
|
}
|