Initial commit
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
//
|
||||
// ConfirmationModel.swift
|
||||
// ExodaiAcademy
|
||||
//
|
||||
// Created by Exodai on 23/01/2026.
|
||||
//
|
||||
|
||||
import Fluent
|
||||
import Vapor
|
||||
|
||||
import Fluent
|
||||
|
||||
final class ConfirmationModel: Model, @unchecked Sendable {
|
||||
static let schema: String = Database.confirmations.rawValue
|
||||
|
||||
@ID(key: .id)
|
||||
var id: UUID?
|
||||
|
||||
@Field(key: FieldKeys.userID)
|
||||
var userID: UserModel.IDValue
|
||||
|
||||
@Field(key: FieldKeys.confirmationCode)
|
||||
var confirmationCode: String
|
||||
|
||||
@Field(key: FieldKeys.email)
|
||||
var email: String
|
||||
|
||||
@Timestamp(key: FieldKeys.createdAt, on: .create)
|
||||
var createdAt: Date?
|
||||
|
||||
@Timestamp(key: FieldKeys.validTill, on: .none)
|
||||
var validTill: Date?
|
||||
|
||||
@Field(key: FieldKeys.isConfirmed)
|
||||
var isConfirmed: Bool
|
||||
|
||||
init() {}
|
||||
|
||||
init(id: UUID? = nil, userID: UserModel.IDValue, email: String?, confirmationCode: String, validTill: Date, isConfirmed: Bool = false) {
|
||||
self.id = id
|
||||
self.userID = userID
|
||||
self.confirmationCode = confirmationCode
|
||||
self.validTill = validTill
|
||||
self.isConfirmed = isConfirmed
|
||||
}
|
||||
}
|
||||
|
||||
extension ConfirmationModel {
|
||||
struct FieldKeys {
|
||||
static var userID: FieldKey { "userID" }
|
||||
static var confirmationCode: FieldKey { "confirmationCode" }
|
||||
static var email: FieldKey { "email" }
|
||||
static var createdAt: FieldKey { "createdAt" }
|
||||
static var validTill: FieldKey { "validTill" }
|
||||
static var isConfirmed: FieldKey { "isConfirmed" }
|
||||
}
|
||||
}
|
||||
|
||||
extension ConfirmationModel {
|
||||
struct Migration: AsyncMigration {
|
||||
|
||||
func prepare(on database: any FluentKit.Database) async throws {
|
||||
try await database.schema(ConfirmationModel.schema)
|
||||
.id()
|
||||
.field(FieldKeys.userID, .uuid, .required)
|
||||
.field(FieldKeys.confirmationCode, .string, .required)
|
||||
.field(FieldKeys.email, .string, .required)
|
||||
.field(FieldKeys.createdAt, .datetime)
|
||||
.field(FieldKeys.validTill, .datetime)
|
||||
.field(FieldKeys.isConfirmed, .bool, .required)
|
||||
.create()
|
||||
}
|
||||
|
||||
func revert(on database: any FluentKit.Database) async throws {
|
||||
try await database.schema(ConfirmationModel.schema).delete()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user