cpularp-manager-api/lib/dbcommands/dbcommands.go

81 lines
1.7 KiB
Go
Raw Normal View History

2025-04-21 23:05:50 -05:00
package dbcommands
import (
"errors"
2025-04-21 23:05:50 -05:00
"log"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
type User struct {
gorm.Model
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
}
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
}
}
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", "")
}