Как использовать встроенный массив в таблице Vapor Postgres? - PullRequest
1 голос
/ 18 февраля 2020

Мне нужно использовать встроенный массив в таблице Fluent Postgres.

final class TempUser: Content {
    var id: Int?
    var Uuid: String
    var bookedSeats: [BookedSeat] // <- HERE

и

struct BookedSeat: Content {
    var price: String
    var sectorInd: Int
    var rowInd: Int
    var seatInd: Int
    var bookedUntil: Date
}

Но получаю ошибку и предупреждение:

[WARNING] [PostgreSQL] Could not determine PostgreSQL array data type: Array<BookedSeat>
[ ERROR ] PostgreSQLError.server.error.array_recv: wrong element type (ErrorMiddleware.swift:26)

Я сделал собственное решение, выполняя декодирование массива вручную:

func setBookedSeatsArray(bs: [BookedSeat]) {
    let encoder = JSONEncoder()
    let data = try! encoder.encode(bs)
    let ret = String(data: data, encoding: .utf8)!
    self.bookedSeats = ret
}

func getGookedSeatsArray() -> [BookedSeat] {
    let decoder = JSONDecoder()
    let ret = try! decoder.decode([BookedSeat].self, from: self.bookedSeats)
    return ret
}

но мне не очень нравится это решение.

Кто-то сказал: мне нужно согласовать сущность с PostgreSQLDataTypeStaticRepresentable.

Но я не могу понять, как?

enter image description here

enter image description here

...