Skip to content

Commit f231b7d

Browse files
committed
Separate migrations from models
1 parent 10f398a commit f231b7d

File tree

7 files changed

+51
-45
lines changed

7 files changed

+51
-45
lines changed

Sources/FluentOrders/Models/Concrete Models/Order.swift

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,17 @@ final public class Order: OrderModel, @unchecked Sendable {
2929
@Field(key: Order.FieldKeys.authenticationToken)
3030
public var authenticationToken: String
3131

32-
public required init() {}
32+
public init() {}
3333

34-
public required init(typeIdentifier: String, authenticationToken: String) {
34+
public init(typeIdentifier: String, authenticationToken: String) {
3535
self.typeIdentifier = typeIdentifier
3636
self.authenticationToken = authenticationToken
3737
}
3838
}
3939

40-
extension Order: AsyncMigration {
40+
public struct CreateOrder: AsyncMigration {
4141
public func prepare(on database: any Database) async throws {
42-
try await database.schema(Self.schema)
42+
try await database.schema(Order.FieldKeys.schemaName)
4343
.id()
4444
.field(Order.FieldKeys.createdAt, .datetime, .required)
4545
.field(Order.FieldKeys.updatedAt, .datetime, .required)
@@ -49,8 +49,10 @@ extension Order: AsyncMigration {
4949
}
5050

5151
public func revert(on database: any Database) async throws {
52-
try await database.schema(Self.schema).delete()
52+
try await database.schema(Order.FieldKeys.schemaName).delete()
5353
}
54+
55+
public init() {}
5456
}
5557

5658
extension Order {

Sources/FluentOrders/Models/Concrete Models/OrdersRegistration.swift

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@ import FluentWallet
33

44
/// The `Model` that stores orders registrations.
55
final public class OrdersRegistration: OrdersRegistrationModel, @unchecked Sendable {
6-
public typealias OrderType = Order
7-
public typealias DeviceType = Device
8-
96
/// The schema name of the orders registration model.
107
public static let schema = OrdersRegistration.FieldKeys.schemaName
118

@@ -14,33 +11,35 @@ final public class OrdersRegistration: OrdersRegistrationModel, @unchecked Senda
1411

1512
/// The device for this registration.
1613
@Parent(key: OrdersRegistration.FieldKeys.deviceID)
17-
public var device: DeviceType
14+
public var device: Device
1815

1916
/// The order for this registration.
2017
@Parent(key: OrdersRegistration.FieldKeys.orderID)
21-
public var order: OrderType
18+
public var order: Order
2219

2320
public init() {}
2421
}
2522

26-
extension OrdersRegistration: AsyncMigration {
23+
public struct CreateOrdersRegistration: AsyncMigration {
2724
public func prepare(on database: any Database) async throws {
28-
try await database.schema(Self.schema)
25+
try await database.schema(OrdersRegistration.FieldKeys.schemaName)
2926
.field(.id, .int, .identifier(auto: true))
3027
.field(
3128
OrdersRegistration.FieldKeys.deviceID, .int, .required,
32-
.references(DeviceType.schema, .id, onDelete: .cascade)
29+
.references(Device.FieldKeys.schemaName, .id, onDelete: .cascade)
3330
)
3431
.field(
3532
OrdersRegistration.FieldKeys.orderID, .uuid, .required,
36-
.references(OrderType.schema, .id, onDelete: .cascade)
33+
.references(Order.FieldKeys.schemaName, .id, onDelete: .cascade)
3734
)
3835
.create()
3936
}
4037

4138
public func revert(on database: any Database) async throws {
42-
try await database.schema(Self.schema).delete()
39+
try await database.schema(OrdersRegistration.FieldKeys.schemaName).delete()
4340
}
41+
42+
public init() {}
4443
}
4544

4645
extension OrdersRegistration {

Sources/FluentPasses/Models/Concrete Models/Pass.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ import Foundation
55
///
66
/// Uses a UUID so people can't easily guess pass serial numbers.
77
final public class Pass: PassModel, @unchecked Sendable {
8-
public typealias PersonalizationType = Personalization
9-
108
/// The schema name of the pass model.
119
public static let schema = Pass.FieldKeys.schemaName
1210

@@ -31,34 +29,36 @@ final public class Pass: PassModel, @unchecked Sendable {
3129

3230
/// The user personalization info.
3331
@OptionalParent(key: Pass.FieldKeys.personalizationID)
34-
public var personalization: PersonalizationType?
32+
public var personalization: Personalization?
3533

36-
public required init() {}
34+
public init() {}
3735

38-
public required init(typeIdentifier: String, authenticationToken: String) {
36+
public init(typeIdentifier: String, authenticationToken: String) {
3937
self.typeIdentifier = typeIdentifier
4038
self.authenticationToken = authenticationToken
4139
}
4240
}
4341

44-
extension Pass: AsyncMigration {
42+
public struct CreatePass: AsyncMigration {
4543
public func prepare(on database: any Database) async throws {
46-
try await database.schema(Self.schema)
44+
try await database.schema(Pass.FieldKeys.schemaName)
4745
.id()
4846
.field(Pass.FieldKeys.updatedAt, .datetime, .required)
4947
.field(Pass.FieldKeys.typeIdentifier, .string, .required)
5048
.field(Pass.FieldKeys.authenticationToken, .string, .required)
5149
.field(
5250
Pass.FieldKeys.personalizationID, .int,
53-
.references(PersonalizationType.schema, .id)
51+
.references(Personalization.FieldKeys.schemaName, .id)
5452
)
5553
.unique(on: Pass.FieldKeys.personalizationID)
5654
.create()
5755
}
5856

5957
public func revert(on database: any Database) async throws {
60-
try await database.schema(Self.schema).delete()
58+
try await database.schema(Pass.FieldKeys.schemaName).delete()
6159
}
60+
61+
public init() {}
6262
}
6363

6464
extension Pass {

Sources/FluentPasses/Models/Concrete Models/PassesRegistration.swift

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@ import FluentWallet
33

44
/// The `Model` that stores passes registrations.
55
final public class PassesRegistration: PassesRegistrationModel, @unchecked Sendable {
6-
public typealias PassType = Pass
7-
public typealias DeviceType = Device
8-
96
/// The schema name of the passes registration model.
107
public static let schema = PassesRegistration.FieldKeys.schemaName
118

@@ -14,33 +11,35 @@ final public class PassesRegistration: PassesRegistrationModel, @unchecked Senda
1411

1512
/// The device for this registration.
1613
@Parent(key: PassesRegistration.FieldKeys.deviceID)
17-
public var device: DeviceType
14+
public var device: Device
1815

1916
/// The pass for this registration.
2017
@Parent(key: PassesRegistration.FieldKeys.passID)
21-
public var pass: PassType
18+
public var pass: Pass
2219

2320
public init() {}
2421
}
2522

26-
extension PassesRegistration: AsyncMigration {
23+
public struct CreatePassesRegistration: AsyncMigration {
2724
public func prepare(on database: any Database) async throws {
28-
try await database.schema(Self.schema)
25+
try await database.schema(PassesRegistration.FieldKeys.schemaName)
2926
.field(.id, .int, .identifier(auto: true))
3027
.field(
3128
PassesRegistration.FieldKeys.deviceID, .int, .required,
32-
.references(DeviceType.schema, .id, onDelete: .cascade)
29+
.references(Device.FieldKeys.schemaName, .id, onDelete: .cascade)
3330
)
3431
.field(
3532
PassesRegistration.FieldKeys.passID, .uuid, .required,
36-
.references(PassType.schema, .id, onDelete: .cascade)
33+
.references(Pass.FieldKeys.schemaName, .id, onDelete: .cascade)
3734
)
3835
.create()
3936
}
4037

4138
public func revert(on database: any Database) async throws {
42-
try await database.schema(Self.schema).delete()
39+
try await database.schema(PassesRegistration.FieldKeys.schemaName).delete()
4340
}
41+
42+
public init() {}
4443
}
4544

4645
extension PassesRegistration {

Sources/FluentPasses/Models/Concrete Models/Personalization.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ final public class Personalization: PersonalizationModel, @unchecked Sendable {
4646
public init() {}
4747
}
4848

49-
extension Personalization: AsyncMigration {
49+
public struct CreatePersonalization: AsyncMigration {
5050
public func prepare(on database: any Database) async throws {
51-
try await database.schema(Self.schema)
51+
try await database.schema(Personalization.FieldKeys.schemaName)
5252
.field(.id, .int, .identifier(auto: true))
5353
.field(Personalization.FieldKeys.fullName, .string)
5454
.field(Personalization.FieldKeys.givenName, .string)
@@ -61,8 +61,10 @@ extension Personalization: AsyncMigration {
6161
}
6262

6363
public func revert(on database: any Database) async throws {
64-
try await database.schema(Self.schema).delete()
64+
try await database.schema(Personalization.FieldKeys.schemaName).delete()
6565
}
66+
67+
public init() {}
6668
}
6769

6870
extension Personalization {

Sources/FluentWallet/Models/Concrete Models/Device.swift

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ final public class Device: DeviceModel, @unchecked Sendable {
2424
public init() {}
2525
}
2626

27-
extension Device: AsyncMigration {
27+
public struct CreateDevice: AsyncMigration {
2828
public func prepare(on database: any Database) async throws {
29-
try await database.schema(Self.schema)
29+
try await database.schema(Device.FieldKeys.schemaName)
3030
.field(.id, .int, .identifier(auto: true))
3131
.field(Device.FieldKeys.pushToken, .string, .required)
3232
.field(Device.FieldKeys.libraryIdentifier, .string, .required)
@@ -35,13 +35,15 @@ extension Device: AsyncMigration {
3535
}
3636

3737
public func revert(on database: any Database) async throws {
38-
try await database.schema(Self.schema).delete()
38+
try await database.schema(Device.FieldKeys.schemaName).delete()
3939
}
40+
41+
public init() {}
4042
}
4143

4244
extension Device {
43-
enum FieldKeys {
44-
static let schemaName = "devices"
45+
package enum FieldKeys {
46+
package static let schemaName = "devices"
4547
static let pushToken = FieldKey(stringLiteral: "push_token")
4648
static let libraryIdentifier = FieldKey(stringLiteral: "library_identifier")
4749
}

Sources/FluentWallet/Models/Concrete Models/LogEntry.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,19 @@ final public class LogEntry: LogEntryModel, @unchecked Sendable {
1919
public init() {}
2020
}
2121

22-
extension LogEntry: AsyncMigration {
22+
public struct CreateLogEntry: AsyncMigration {
2323
public func prepare(on database: any Database) async throws {
24-
try await database.schema(Self.schema)
24+
try await database.schema(LogEntry.FieldKeys.schemaName)
2525
.field(.id, .int, .identifier(auto: true))
2626
.field(LogEntry.FieldKeys.message, .string, .required)
2727
.create()
2828
}
2929

3030
public func revert(on database: any Database) async throws {
31-
try await database.schema(Self.schema).delete()
31+
try await database.schema(LogEntry.FieldKeys.schemaName).delete()
3232
}
33+
34+
public init() {}
3335
}
3436

3537
extension LogEntry {

0 commit comments

Comments
 (0)