Initial commit

This commit is contained in:
Johan
2026-01-26 00:37:35 +01:00
commit f303cb46b7
30 changed files with 2251 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
//
// UserRepository.swift
// ExodaiAcademy
//
// Created by Exodai on 25/01/2026.
//
import Foundation
protocol UserRepository {
func find(id: UUID) async throws -> UserModel.Public?
func findByEmail(_ email: String) async throws -> UserModel.Public?
func findByUsername(_ username: String) async throws -> UserModel.Public?
func all() async throws -> [UserModel.Public]
}
import Fluent
struct FluentUserRepository: UserRepository {
let db: any FluentKit.Database
func find(id: UUID) async throws -> UserModel.Public? {
try await UserModel.find(id, on: db)?
.convertToPublic()
}
func findByEmail(_ email: String) async throws -> UserModel.Public? {
try await UserModel.query(on: db)
.filter(\.$email == email)
.first()?
.convertToPublic()
}
func findByUsername(_ username: String) async throws -> UserModel.Public? {
try await UserModel.query(on: db)
.filter(\.$username == username)
.first()?
.convertToPublic()
}
func all() async throws -> [UserModel.Public] {
try await UserModel.query(on: db)
.all()
.convertToPublic()
}
}