// // FolderModel.swift // ExodaiAcademy // // Created by Exodai on 24/01/2026. // import Fluent final class FolderModel: Model, @unchecked Sendable { static let schema: String = Database.folders.rawValue @ID(key: .id) var id: UUID? @Field(key: FieldKeys.name) var name: String @OptionalField(key: FieldKeys.parentFolderID) var parentFolderID: FolderModel.IDValue? @Timestamp(key: FieldKeys.createdAt, on: .create) var createdAt: Date? @Timestamp(key: FieldKeys.updatedAt, on: .update) var updatedAt: Date? init() {} } extension FolderModel { struct FieldKeys { static var name: FieldKey { "name" } static var parentFolderID: FieldKey { "parentFolderID" } static var createdAt: FieldKey { "createdAt" } static var updatedAt: FieldKey { "updatedAt" } } } import Fluent extension FolderModel { struct Migration: AsyncMigration { func prepare(on database: any FluentKit.Database) async throws { try await database.schema(FolderModel.schema) .id() .field(FieldKeys.name, .string, .required) .field(FieldKeys.parentFolderID, .uuid) .field(FieldKeys.createdAt, .datetime) .field(FieldKeys.updatedAt, .datetime) .create() } func revert(on database: any FluentKit.Database) async throws { try await database.schema(FolderModel.schema).delete() } } }