feat: login with apple
This commit is contained in:
@@ -2,26 +2,30 @@ package dao
|
||||
|
||||
import (
|
||||
"github.com/nose7en/ToyBoomServer/defs"
|
||||
"github.com/nose7en/ToyBoomServer/storage"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type Query interface {
|
||||
GetUserByAppleUserID(appleUserID string) (defs.UserGettable, error)
|
||||
GetUserByID(userID int64) (defs.UserGettable, error)
|
||||
}
|
||||
|
||||
type Mutation interface {
|
||||
CreateUser(user defs.UserGettable) error
|
||||
FirstOrCreateUser(user defs.UserGettable) (defs.UserGettable, error)
|
||||
}
|
||||
|
||||
var _ Query = (*queryImpl)(nil)
|
||||
var _ Mutation = (*mutationImpl)(nil)
|
||||
|
||||
type queryImpl struct{}
|
||||
type mutationImpl struct{}
|
||||
type queryImpl struct{ db *gorm.DB }
|
||||
|
||||
type mutationImpl struct{ db *gorm.DB }
|
||||
|
||||
func NewQuery() Query {
|
||||
return &queryImpl{}
|
||||
return &queryImpl{db: storage.GetDBManager().GetDefaultDB()}
|
||||
}
|
||||
|
||||
func NewMutation() Mutation {
|
||||
return &mutationImpl{}
|
||||
return &mutationImpl{db: storage.GetDBManager().GetDefaultDB()}
|
||||
}
|
||||
|
||||
32
dao/user.go
32
dao/user.go
@@ -1,13 +1,33 @@
|
||||
package dao
|
||||
|
||||
import "github.com/nose7en/ToyBoomServer/defs"
|
||||
import (
|
||||
"github.com/nose7en/ToyBoomServer/defs"
|
||||
"github.com/nose7en/ToyBoomServer/models"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func (q *queryImpl) GetUserByAppleUserID(appleUserID string) (defs.UserGettable, error) {
|
||||
|
||||
return nil, nil
|
||||
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 (m *mutationImpl) CreateUser(user defs.UserGettable) error {
|
||||
|
||||
return 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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user