Initial commit
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
//
|
||||
// FileModel.swift
|
||||
// ExodaiAcademy
|
||||
//
|
||||
// Created by Exodai on 24/01/2026.
|
||||
//
|
||||
|
||||
import Fluent
|
||||
|
||||
final class FileModel: Model, @unchecked Sendable {
|
||||
static let schema: String = Database.files.rawValue
|
||||
|
||||
@ID(key: .id)
|
||||
var id: UUID?
|
||||
|
||||
@Field(key: FieldKeys.folderID)
|
||||
var folderID: FolderModel.IDValue
|
||||
|
||||
@Field(key: FieldKeys.name)
|
||||
var name: String
|
||||
|
||||
@Field(key: FieldKeys.type)
|
||||
var type: String
|
||||
|
||||
@Field(key: FieldKeys.mimeType)
|
||||
var mimeType: String
|
||||
|
||||
@Field(key: FieldKeys.storageKey)
|
||||
var storageKey: String
|
||||
|
||||
@Field(key: FieldKeys.size)
|
||||
var size: Int64
|
||||
|
||||
@OptionalField(key: FieldKeys.metadata)
|
||||
var metadata: String?
|
||||
|
||||
@Timestamp(key: FieldKeys.createdAt, on: .create)
|
||||
var createdAt: Date?
|
||||
|
||||
init() {}
|
||||
}
|
||||
|
||||
extension FileModel {
|
||||
struct FieldKeys {
|
||||
static var folderID: FieldKey { "folderID" }
|
||||
static var name: FieldKey { "name" }
|
||||
static var type: FieldKey { "type" }
|
||||
static var mimeType: FieldKey { "mimeType" }
|
||||
static var storageKey: FieldKey { "storageKey" }
|
||||
static var size: FieldKey { "size" }
|
||||
static var metadata: FieldKey { "metadata" }
|
||||
static var createdAt: FieldKey { "createdAt" }
|
||||
}
|
||||
}
|
||||
|
||||
import Fluent
|
||||
|
||||
extension FileModel {
|
||||
struct Migration: AsyncMigration {
|
||||
|
||||
func prepare(on database: any FluentKit.Database) async throws {
|
||||
try await database.schema(FileModel.schema)
|
||||
.id()
|
||||
.field(FieldKeys.folderID, .uuid, .required)
|
||||
.field(FieldKeys.name, .string, .required)
|
||||
.field(FieldKeys.type, .string, .required)
|
||||
.field(FieldKeys.mimeType, .string, .required)
|
||||
.field(FieldKeys.storageKey, .string, .required)
|
||||
.field(FieldKeys.size, .int64, .required)
|
||||
.field(FieldKeys.metadata, .string)
|
||||
.field(FieldKeys.createdAt, .datetime)
|
||||
.create()
|
||||
}
|
||||
|
||||
func revert(on database: any FluentKit.Database) async throws {
|
||||
try await database.schema(FileModel.schema).delete()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user