// // File.swift // // // Created by Michiel Carman on 9/26/24. // import Foundation import Vapor import Fluent struct CreateUser: AsyncMigration { func prepare(on database: Database) async throws { try await database.schema(User.schema) .id() .field("username", .string, .required) .unique(on: "username") .field("password_hash", .string, .required) .field("created_at", .datetime, .required) .field("updated_at", .datetime, .required) .create() } func revert(on database: Database) async throws { try await database.schema(User.schema).delete() } } struct UpdateUser1: AsyncMigration{ func prepare(on database: Database) async throws { try await database.schema(User.schema) .deleteField("created_at") .deleteField("updated_at") .update() } func revert(on database: Database) async throws { try await database.schema(User.schema) .field("created_at", .datetime, .required) .field("updated_at", .datetime, .required) .update() } } struct UpdateUser2_AddTokenfield: AsyncMigration { func prepare(on database: Database) async throws { try await database.schema(User.schema) .field("token", .string) .update() } func revert(on database: Database) async throws { try await database.schema(User.schema) .deleteField("token") .update() } } struct UpdateUser3_RemoveTokenfield: AsyncMigration { func prepare(on database: Database) async throws { try await database.schema(User.schema) .deleteField("token") .update() } func revert(on database: Database) async throws { try await database.schema(User.schema) .field("token", .string) .update() } }