Files
Exodai-Academy-API/Sources/ExodaiAcademy/Infrastructure/Database/FolderModel.swift
2026-01-26 00:37:35 +01:00

60 lines
1.5 KiB
Swift

//
// 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()
}
}
}