package databasecommands import ( "errors" "log" databasemodels "example.com/database/models" "gorm.io/driver/sqlite" "gorm.io/gorm" ) 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(&databasemodels.User{}) return db } func GetDatabaseUserToken(db *gorm.DB, id string) string { var dbUser databasemodels.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 databasemodels.User result := db.Where("id = ?", id).Take(&queryUser) if errors.Is(result.Error, gorm.ErrRecordNotFound) { return false } else { return true } } func DatabaseUserLoggedIn(db *gorm.DB, id string) bool { var queryUser databasemodels.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 databasemodels.User) error { result := db.Save(&user) if result.Error != nil { return result.Error } return nil } func CreateDatabaseUser(db *gorm.DB, user databasemodels.User) error { result := db.Create(&user) if result.Error != nil { return result.Error } return nil } func LogoutDatabaseUser(db *gorm.DB, oauthToken string) { db.Model(&databasemodels.User{}).Where("login_token = ?", oauthToken).Update("logged_in", false) db.Model(&databasemodels.User{}).Where("login_token = ?", oauthToken).Update("login_token", "") }