34 lines
984 B
Go
34 lines
984 B
Go
package dao
|
|
|
|
import (
|
|
"github.com/nose7en/ToyBoomServer/defs"
|
|
"github.com/nose7en/ToyBoomServer/models"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func (q *queryImpl) GetUserByAppleUserID(appleUserID string) (defs.UserGettable, error) {
|
|
user := &models.User{}
|
|
if result := q.db.Where(models.User{AppleUserID: appleUserID}).First(user); result.Error != nil {
|
|
return nil, result.Error
|
|
}
|
|
return user, nil
|
|
}
|
|
|
|
func (q *queryImpl) GetUserByID(userID int64) (defs.UserGettable, error) {
|
|
user := &models.User{}
|
|
if result := q.db.Where(models.User{Model: gorm.Model{ID: uint(userID)}}).First(user); result.Error != nil {
|
|
return nil, result.Error
|
|
}
|
|
return user, nil
|
|
}
|
|
|
|
func (m *mutationImpl) FirstOrCreateUser(user defs.UserGettable) (defs.UserGettable, error) {
|
|
record := &models.User{}
|
|
newUserAttrs := &models.User{}
|
|
newUserAttrs.FromUserInfo(user)
|
|
result := m.db.Where(models.User{AppleUserID: user.GetAppleUserID()}).
|
|
Attrs(newUserAttrs).
|
|
FirstOrCreate(record)
|
|
return record, result.Error
|
|
}
|