Когда я добавляю модель в базу данных с помощью create, Vapor fluent не выдает исключение, когда один из внешних ключей нарушается. Он также не вставлен, функция создания просто возвращается как обычно.
Это стандартное поведение Vapor Fluent?
Я использую Vapor 3 с PostgreSQL.
Это моя миграция для добавления ограничений внешнего ключа:
struct AddAddressForeignKeys: Migration {
typealias Database = PostgreSQLDatabase
static func prepare(on conn: PostgreSQLConnection) -> Future<Void> {
return PostgreSQLDatabase.update(Address.self, on: conn) { builder in
builder.reference(from: \.regionId, to: \CodeRegion.id)
builder.reference(from: \.countryId, to: \CodeCountry.id)
}
}
static func revert(on conn: PostgreSQLConnection) -> Future<Void> {
return PostgreSQLDatabase.update(Address.self, on: conn) { builder in
builder.deleteReference(from: \.regionId, to: \CodeRegion.id)
builder.deleteReference(from: \.countryId, to: \CodeCountry.id)
}
}
}
Обновление: я добавил enableReferences, как упомянуто в ответе Джейкоба Релкина, но все еще нет исключений. Н
// Configure database
let config = PostgreSQLDatabaseConfig(hostname: "localhost", port: 5432, username: "postgres", database: "test", password: nil, transport: .cleartext)
let postgres = PostgreSQLDatabase(config: config)
// Register the configured database to the database config.
var databases = DatabasesConfig()
databases.add(database: postgres, as: .psql)
databases.enableReferences(on: .psql)
services.register(databases)