Skip to content

Commit 6bc57ed

Browse files
committed
Use name as primary key in ServerSetting
1 parent 9158e5f commit 6bc57ed

3 files changed

Lines changed: 9 additions & 11 deletions

File tree

Sources/App/Migrations/CreateServerSetting.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@ struct CreateServerSetting: AsyncMigration {
55

66
func prepare(on database: Database) async throws {
77
try await database.schema("settings")
8-
.id()
9-
.field("name", .string, .required)
8+
.field("name", .string, .identifier(auto: false))
109
.field("value", .string, .required)
1110
.field("updated_at", .datetime)
12-
.unique(on: "name")
1311
.create()
1412
}
1513

Sources/App/Models/ServerSetting.swift

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@ import Foundation
44
final class ServerSetting: RepositoryItem, @unchecked Sendable {
55
static let schema = "settings"
66

7-
@ID(key: .id)
8-
var id: UUID?
7+
@ID(custom: "name", generatedBy: .user)
8+
var id: String?
99

10-
@Field(key: "name")
11-
var name: String
10+
var name: String {
11+
get { id! }
12+
set { id = newValue }
13+
}
1214

1315
@Field(key: "value")
1416
var value: String
@@ -19,7 +21,7 @@ final class ServerSetting: RepositoryItem, @unchecked Sendable {
1921
init() {}
2022

2123
init(name: String, value: String) {
22-
self.name = name
24+
self.id = name
2325
self.value = value
2426
}
2527
}

Sources/App/Repositories/SettingsRepository.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,7 @@ actor SettingsDatabaseRepository: DatabaseRepository, SettingsRepository {
2020
}
2121

2222
func find(name: String) async throws -> ServerSetting? {
23-
try await ServerSetting.query(on: database)
24-
.filter(\.$name == name)
25-
.first()
23+
try await ServerSetting.find(name, on: database)
2624
}
2725

2826
func save(_ setting: ServerSetting) async throws {

0 commit comments

Comments
 (0)