package db_cold import ( "time" "gorm.io/gorm" ) type UserAuth struct { gorm.Model UserID string `gorm:"primarykey"` UserName string UserLogin string UserEmail string AccessToken string RefreshToken string TokenExpires time.Time } func (db *DBColdConn) initUserAuth() { db.Gorm.AutoMigrate(&UserAuth{}) } func (db *DBColdConn) GetAllUserAuth() ([]UserAuth, error) { var userAuths []UserAuth res := db.Gorm.Find(&userAuths) if res.Error != nil { return nil, res.Error } return userAuths, nil } // add or update user auth, based on ID func (db *DBColdConn) UpdateUserAuth(userID, userName, userLogin, accessToken, refreshToken string, tokenExpires time.Time) error { userAuth := UserAuth{ UserID: userID, UserName: userName, UserLogin: userLogin, AccessToken: accessToken, RefreshToken: refreshToken, TokenExpires: tokenExpires, } rows, err := gorm.G[UserAuth](db.Gorm).Where("id = ?", userID).Find(db.Ctx) if err != nil { return err } if len(rows) > 0 { // update _, err := gorm.G[UserAuth](db.Gorm).Where("id = ?", userID).Updates(db.Ctx, userAuth) if err != nil { return err } } else { // add err := gorm.G[UserAuth](db.Gorm).Create(db.Ctx, &userAuth) if err != nil { return err } } return nil }