Как сохранить модель с указанным c id в Vapor 3 - PullRequest
1 голос
/ 23 февраля 2020

Я пытаюсь добавить некоторые начальные данные в таблицу в процессе миграции. Для этой таблицы я не хочу, чтобы значение id генерировалось автоматически, но я хочу установить его вручную для каждой записи. Как это может быть сделано? Мой текущий код выглядит следующим образом, но запись не вставляется в базу данных, и при запуске миграции не выдается никакой ошибки.

Класс модели:

import Foundation
import FluentPostgreSQL
import Vapor

final class PropertyType: PostgreSQLModel {
    var id: Int?
    var name: String

    init(id: Int, name: String) {
        self.id = id
        self.name = name
    }
}

extension PropertyType: Migration { }
extension PropertyType: Content { }
extension PropertyType: Parameter { }

Класс миграции:

import FluentPostgreSQL
import Vapor

struct AddPropertyTypes: Migration {
    typealias Database = PostgreSQLDatabase

    static func prepare(on conn: PostgreSQLConnection) -> Future<Void> {
        let propertyType1 = PropertyType(id: 1, name: "Einfamilienhaus")
        return propertyType.save(on: conn).transform(to: ())
    }

    static func revert(on conn: PostgreSQLConnection) -> Future<Void> {
        let futures = [1].map { id in
            return CodePropertyType.query(on: conn).filter(\CodePropertyType.id == id)
                .delete()
        }
        return futures.flatten(on: conn)
    }
}

1 Ответ

2 голосов
/ 23 февраля 2020

Просто замените

propertyType.save(on: conn)

на

propertyType.create(on: conn)
...