recommender/internal/service/user/external.go
2024-11-10 00:11:00 +08:00

36 lines
998 B
Go

package user
import (
"context"
"leafdev.top/Ecosystem/recommender/internal/entity"
)
func (s *Service) GetOrCreateExternalUser(c context.Context, externalUserId string, applicationEntity *entity.Application) (*entity.ExternalUser, error) {
//Where(s.dao.UserTagScore.ExternalUserId.Eq(externalUserEntity.Id.Uint())).
count, err := s.dao.WithContext(c).ExternalUser.
Where(s.dao.ExternalUser.ApplicationId.Eq(applicationEntity.Id.Uint())).
Where(s.dao.ExternalUser.ExternalId.Eq(externalUserId)).Count()
if err != nil {
return nil, err
}
if count > 0 {
eu, err := s.dao.WithContext(c).ExternalUser.
Where(s.dao.ExternalUser.ApplicationId.Eq(applicationEntity.Id.Uint())).
Where(s.dao.ExternalUser.ExternalId.Eq(externalUserId)).First()
if err != nil {
return nil, err
}
return eu, nil
}
eu := &entity.ExternalUser{
ApplicationId: applicationEntity.Id,
ExternalId: externalUserId,
}
err = s.dao.WithContext(c).ExternalUser.Create(eu)
return eu, err
}