IOOI
(Lars Sonchocky-Helldorf)
1
Hi there,
I want to store a JSON string in a Postgresql-JSONB column. Googling that topic I was only able to find this:
https://losingfight.com/blog/2018/11/25/how-to-add-a-postgresql-jsonb-column-in-vapors-fluent/
but it is about Vapor 3.
My question is: would I still do it the way it is described in above link or do things have changed for Vapor 4?
Kind regards,
Lars
I believe you want something like this:
import Foundation
import Fluent
final class MyModel: Model {
static let schema = "schema"
@ID public var id: UUID?
@Field(key: "json") public var json: Nested
@Field(key: "jsonb") public var jsonb: Data
struct Nested: Codable {
let thing: Int
}
}
struct MyModelMigration: Migration {
func prepare(on database: Database) -> EventLoopFuture<Void> {
database.schema("schema")
.field(.id, .uuid, .identifier(auto: false))
.field(.string("json"), .json, .required)
.field(.string("jsonb"), .custom("JSONB"), .required)
.create()
}
func revert(on database: Database) -> EventLoopFuture<Void> {
database.schema("schema").delete()
}
}