feat: Updates api controllers to use database client.

This commit is contained in:
2025-01-14 13:10:24 -05:00
parent ccf80f05a7
commit 31c6b51371
17 changed files with 313 additions and 303 deletions

View File

@@ -2,6 +2,7 @@ import DatabaseClient
import Fluent
import Foundation
import SharedModels
import Vapor
public extension DatabaseClient.Employees {

View File

@@ -51,6 +51,21 @@ public extension DatabaseClient.Users {
guard let token = try await UserTokenModel.find(id, on: database)
else { return }
try await token.delete(on: database)
} token: { _ in
guard let user = try await UserModel.query(on: database)
.with(\.$token)
.first()
else {
throw Abort(.notFound)
}
guard let token = user.token else {
let token = try user.generateToken()
try await token.save(on: database)
return try token.toDTO()
}
return try token.toDTO()
}
}
}
@@ -156,6 +171,9 @@ final class UserModel: Model, @unchecked Sendable {
@Timestamp(key: "updated_at", on: .update)
var updatedAt: Date?
@OptionalChild(for: \.$user)
var token: UserTokenModel?
init() {}
init(
@@ -210,6 +228,10 @@ final class UserTokenModel: Model, Codable, @unchecked Sendable {
$user.id = userID
}
func toDTO() throws -> User.Token {
try .init(id: requireID(), userID: $user.id, value: value)
}
}
// MARK: - Authentication
@@ -219,8 +241,6 @@ extension User: SessionAuthenticatable {
public var sessionID: String { username }
}
extension User: Content {}
public struct UserPasswordAuthenticator: AsyncBasicAuthenticator {
public typealias User = SharedModels.User

View File

@@ -2,6 +2,7 @@ import DatabaseClient
import FluentKit
import Foundation
import SharedModels
import Vapor
public extension DatabaseClient.Vendors {