feat: Moves api controller to it's own module.
This commit is contained in:
@@ -25,7 +25,9 @@ public extension DatabaseClient.Users {
|
||||
} login: { login in
|
||||
try login.validate()
|
||||
|
||||
var query = UserModel.query(on: database)
|
||||
var query = UserModel
|
||||
.query(on: database)
|
||||
.with(\.$token)
|
||||
|
||||
if let username = login.username {
|
||||
query = query.filter(\UserModel.$username == username)
|
||||
@@ -37,15 +39,19 @@ public extension DatabaseClient.Users {
|
||||
throw NotFoundError()
|
||||
}
|
||||
|
||||
let token = try user.generateToken()
|
||||
let token: User.Token
|
||||
|
||||
try await token.save(on: database)
|
||||
// Check if the user already has a token.
|
||||
if let userToken = user.token {
|
||||
token = try userToken.toDTO()
|
||||
} else {
|
||||
// Generate a new token for the user if they didn't have one.
|
||||
let tokenModel = try user.generateToken()
|
||||
try await tokenModel.save(on: database)
|
||||
token = try tokenModel.toDTO()
|
||||
}
|
||||
|
||||
return try User.Token(
|
||||
id: token.requireID(),
|
||||
userID: user.requireID(),
|
||||
value: token.value
|
||||
)
|
||||
return token
|
||||
|
||||
} logout: { id in
|
||||
guard let token = try await UserTokenModel.find(id, on: database)
|
||||
|
||||
Reference in New Issue
Block a user