Skip to content

Commit 472f0f1

Browse files
committed
Remvoed always migration
1 parent de632fd commit 472f0f1

6 files changed

Lines changed: 17 additions & 85 deletions

File tree

Sources/Compiler/Driver.swift

Lines changed: 8 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,10 @@ public actor Driver {
2828
enum Usage {
2929
case migration
3030
case queries
31-
case alwaysMigration
3231
}
3332

3433
enum Error: Swift.Error {
3534
case invalidMigrationName(String)
36-
case canOnlyHaveOneAlwaysMigration
3735
}
3836

3937
init(fileSystem: FileSystem) {
@@ -52,21 +50,16 @@ public actor Driver {
5250
let migrationsPath = migrationsPath(at: path)
5351
let queriesPath = queriesPath(at: path)
5452

55-
let (migrationFiles, alwaysMigration) = try organizeMigrations(
56-
fileNames: fileSystem.files(atPath: migrationsPath)
57-
)
53+
let migrationFiles = try fileSystem.files(atPath: migrationsPath)
5854
let queriesFiles = try fileSystem.files(atPath: queriesPath)
5955

56+
try validateMigrations(fileNames: migrationFiles)
57+
6058
// Migrations must be run synchronously in order.
6159
for migration in migrationFiles {
6260
try compile(file: migration, in: migrationsPath, usage: .migration)
6361
}
6462

65-
// Always migrations always run after
66-
if let alwaysMigration {
67-
try compile(file: alwaysMigration, in: migrationsPath, usage: .migration)
68-
}
69-
7063
// Queries can be compiled independently
7164
try await withThrowingTaskGroup(of: Void.self) { group in
7265
for query in queriesFiles {
@@ -94,15 +87,8 @@ public actor Driver {
9487
.filter{ $0.usage == .queries }
9588
.map { ($0.fileName.split(separator: ".").first?.description, $0.statements) }
9689

97-
let alwaysMigration = results.values
98-
.first { $0.usage == .alwaysMigration }?
99-
.statements
100-
.map(\.sanitizedSource)
101-
.joined()
102-
10390
let file = try Lang.generate(
10491
migrations: migrations,
105-
alwaysMigration: alwaysMigration,
10692
queries: queries,
10793
schema: currentSchema,
10894
options: options
@@ -132,7 +118,7 @@ public actor Driver {
132118
compiler.schema = currentSchema
133119

134120
let diagnostics = switch usage {
135-
case .migration, .alwaysMigration:
121+
case .migration:
136122
compiler.compile(migration: fileContents, namespace: .global)
137123
case .queries:
138124
compiler.compile(queries: fileContents, namespace: .global)
@@ -172,35 +158,19 @@ public actor Driver {
172158
"\(base)/Queries"
173159
}
174160

175-
private func organizeMigrations(
161+
private func validateMigrations(
176162
fileNames: [String]
177-
) throws -> (standard: [String], always: String?) {
178-
var standard: [String] = []
179-
var always: String?
180-
163+
) throws {
181164
for fileName in fileNames.sorted() {
182-
var components = fileName.split(separator: ".")
165+
let components = fileName.split(separator: ".")
183166

184167
guard components.count == 2 else {
185168
throw Error.invalidMigrationName(fileName)
186169
}
187170

188-
let nameWithoutExt = components[0]
189-
190-
if Int(nameWithoutExt) != nil {
191-
standard.append(fileName)
192-
} else if nameWithoutExt == "Always" {
193-
guard always == nil else {
194-
// Can this really even happen?
195-
throw Error.canOnlyHaveOneAlwaysMigration
196-
}
197-
198-
always = fileName
199-
} else {
171+
if Int(components[0]) != nil {
200172
throw Error.invalidMigrationName(fileName)
201173
}
202174
}
203-
204-
return (standard, always)
205175
}
206176
}

Sources/Compiler/Gen/Language.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ public protocol Language {
2525
/// A file source code containing all of the generated tables, queries and migrations.
2626
static func file(
2727
migrations: [String],
28-
alwaysMigration: String?,
2928
tables: [GeneratedModel],
3029
queries: [(String?, [GeneratedQuery])],
3130
options: GenerationOptions
@@ -45,7 +44,6 @@ public protocol Language {
4544
extension Language {
4645
public static func generate(
4746
migrations: [String],
48-
alwaysMigration: String?,
4947
queries: [(String?, [Statement])],
5048
schema: Schema,
5149
options: GenerationOptions
@@ -54,7 +52,6 @@ extension Language {
5452

5553
return try file(
5654
migrations: migrations,
57-
alwaysMigration: alwaysMigration,
5855
tables: values.tables,
5956
queries: values.queries,
6057
options: options

Sources/Compiler/Gen/SwiftLanguage.swift

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ public struct SwiftLanguage: Language {
5858

5959
public static func file(
6060
migrations: [String],
61-
alwaysMigration: String?,
6261
tables: [GeneratedModel],
6362
queries: [(String?, [GeneratedQuery])],
6463
options: GenerationOptions
@@ -96,10 +95,6 @@ public struct SwiftLanguage: Language {
9695

9796
try declaration(for: migrations, options: options)
9897

99-
if let alwaysMigration {
100-
try declaration(alwaysMigration: alwaysMigration, options: options)
101-
}
102-
10398
for (namespace, queries) in queries {
10499
if let namespace {
105100
try queriesVariable(name: namespace, queries: queries)
@@ -207,19 +202,7 @@ public struct SwiftLanguage: Language {
207202

208203
return DeclSyntax(variable)
209204
}
210-
211-
/// The migrations variable
212-
private static func declaration(
213-
alwaysMigration: String,
214-
options: GenerationOptions
215-
) throws -> DeclSyntax {
216-
let variable = try VariableDeclSyntax("static var alwaysMigration: String?") {
217-
stringLiteral(of: alwaysMigration, multiline: true)
218-
}
219-
220-
return DeclSyntax(variable)
221-
}
222-
205+
223206
/// Generates the expression to initialize the query.
224207
///
225208
/// ```swift

Sources/Feather/ConnectionPool.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ public actor ConnectionPool: Sendable {
3636
public init(
3737
path: String,
3838
limit: Int,
39-
migrations: [String],
40-
alwaysMigration: String? = nil
39+
migrations: [String]
4140
) throws {
4241
guard limit > 0 else {
4342
throw FeatherError.poolCannotHaveZeroConnections
@@ -53,7 +52,7 @@ public actor ConnectionPool: Sendable {
5352
try connection.execute(sql: "PRAGMA journal_mode=WAL;")
5453

5554
let tx = try Transaction(connection: connection, kind: .write)
56-
try MigrationRunner.execute(migrations: migrations, alwaysMigration: alwaysMigration, tx: tx)
55+
try MigrationRunner.execute(migrations: migrations, tx: tx)
5756
try tx.commit()
5857

5958
self.availableConnections = [connection]

Sources/Feather/Database.swift

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
public protocol Database {
99
init(connection: any Connection)
1010
static var migrations: [String] { get }
11-
static var alwaysMigration: String? { get }
1211
}
1312

1413
public extension Database {
@@ -17,23 +16,19 @@ public extension Database {
1716
try ConnectionPool(
1817
path: path,
1918
limit: config.maxConnectionCount,
20-
migrations: Self.migrations,
21-
alwaysMigration: Self.alwaysMigration
19+
migrations: Self.migrations
2220
)
2321
} else {
2422
try ConnectionPool(
2523
path: ":memory:",
2624
limit: 1,
27-
migrations: Self.migrations,
28-
alwaysMigration: Self.alwaysMigration
25+
migrations: Self.migrations
2926
)
3027
}
3128

3229
self = Self(connection: connection)
3330
}
34-
35-
static var alwaysMigration: String? { nil }
36-
31+
3732
static func inMemory() throws -> Self {
3833
return try Self(config: DatabaseConfig(path: nil))
3934
}

Sources/Feather/Migration.swift

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,13 @@
88
public struct MigrationRunner {
99
static let migrationTableName = "__featherMigrations"
1010

11-
public static func execute(
12-
migrations: [String],
13-
alwaysMigration: String?,
14-
pool: ConnectionPool
15-
) async throws {
11+
public static func execute(migrations: [String], pool: ConnectionPool) async throws {
1612
try await pool.begin(.write) { tx in
17-
try execute(migrations: migrations, alwaysMigration: alwaysMigration, tx: tx)
13+
try execute(migrations: migrations, tx: tx)
1814
}
1915
}
2016

21-
public static func execute(
22-
migrations: [String],
23-
alwaysMigration: String?,
24-
tx: borrowing Transaction
25-
) throws {
17+
public static func execute(migrations: [String], tx: borrowing Transaction) throws {
2618
try createTableIfNeeded(tx: tx)
2719

2820
let lastMigration = try lastMigration(tx: tx)
@@ -35,10 +27,6 @@ public struct MigrationRunner {
3527
for (number, migration) in pendingMigrations {
3628
try execute(migration: migration, number: number, tx: tx)
3729
}
38-
39-
if let alwaysMigration {
40-
try execute(migration: alwaysMigration, number: nil, tx: tx)
41-
}
4230
}
4331

4432
static func createTableIfNeeded(tx: borrowing Transaction) throws(FeatherError) {

0 commit comments

Comments
 (0)