Я использую внешнюю систему аутентификации для аутентификации пользователей. Но я хочу получить результаты из этой внешней системы и создать запись для пользователей, которая успешно прошла аутентификацию и отсутствует в моей локальной БД.
Я написал специальное промежуточное программное обеспечение для внешней системы аутентификации, которая работает, но я не могу понять, как проверить, существует ли пользователь в моей текущей БД. В настоящее время я использую FluentSQLite в качестве своей базы данных.
let creds = returnFromExternalAuth()
// creds = ["id": "1", "emailAdress": "blah@blah.com", "firstName": "Test", "lastname": "User"]
let user = User.query(on: request).filter(\.ID == id).first()
// returns EventLoopFuture<User?>
То, что я хотел бы сделать, это что-то вроде
if let user = try User.query(on: request).filter(\.ID == id).first(){
// Return the found DB user
return User.query(on: request).filter(\.ID == id).first()
} else {
// create db entry for user
// Query and return the newly created DB object
return User.query(on: request).filter(\.ID == id).first()
}
Это не работает с .first (), поскольку не возвращает Optional.
Заранее спасибо за любую помощь, идеи или предложения.
Derek