Skip to content

Commit e1c9fa8

Browse files
committed
Add UpdateCustomCollectionAddKey migration
1 parent 45b6ed6 commit e1c9fa8

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// Copyright Dave Verwer, Sven A. Schmidt, and other contributors.
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
import Fluent
16+
17+
struct UpdateCustomCollectionAddKey: AsyncMigration {
18+
func prepare(on database: Database) async throws {
19+
// We need to clear the custom_collections table, because the existing rows don't have
20+
// `key` values and their existence prevents the update.
21+
// They will be automatically regenerated by the next reconciliation run.
22+
try await CustomCollection.query(on: database).delete()
23+
try await database.schema("custom_collections")
24+
.field("key", .string, .required)
25+
.unique(on: "key")
26+
.update()
27+
}
28+
29+
func revert(on database: Database) async throws {
30+
try await database.schema("custom_collections")
31+
.deleteField("key")
32+
// The unique key constraint is automatically deleted when the field is deleted,
33+
// no explicit clean up is required.
34+
.update()
35+
}
36+
}

Sources/App/configure.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,9 @@ public func configure(_ app: Application) async throws -> String {
347347
do { // Migration 082 - Add `has_spi_badge` to `repositories`
348348
app.migrations.add(UpdateRepositoryAddHasSPIBadge())
349349
}
350+
do { // Migration 083 - Add `key` and unique constraint to `custom_collections`
351+
app.migrations.add(UpdateCustomCollectionAddKey())
352+
}
350353

351354
app.asyncCommands.use(Analyze.Command(), as: "analyze")
352355
app.asyncCommands.use(CreateRestfileCommand(), as: "create-restfile")

0 commit comments

Comments
 (0)