Initial commit
This commit is contained in:
@@ -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()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user