PSQLError when I try to save model with enum property
Fa1zer opened this issue · 1 comments
Fa1zer commented
When I save a model with enum property I get following PSQLError:
My code:
@Enum(key: "gender")
var gender: Gender
enum Gender: String, Codable, CaseIterable {
case Man, Woman, Other, notStated
static func migrate(_ db: Database) async throws {
_ = try await db.enum("gender")
.case(Gender.Man.rawValue)
.case(Gender.Woman.rawValue)
.case(Gender.Other.rawValue)
.case("notStated")
.create()
}
}
func prepare(on database: Database) async throws {
try await database.schema(User.schema)
.id()
.field("phone", .string, .required)
.field("gender", try await database.enum("gender").read(), .required)
.field("name", .string, .required)
.field("birth_date", .double)
.field("height", .int16)
.field("orientation", try await database.enum("orientation").read())
.field("alcohol_attitude_score", .int16)
.field("smoking_attitude_score", .int16)
.field("family_status", try await database.enum("family_status").read())
.field("pets_availability", try await database.enum("pets_availability").read())
.field("children_attitude_score", .int16)
.field("mood_type", try await database.enum("mood_type").read())
.field("known_languages", .array(of: .string), .required)
.field("zodiac_sign", try await database.enum("zodiac_sign").read())
.field("verify_photo_id", .uuid)
.field("is_verifyed", .bool, .required)
.field("about_me", .string)
.field("interests", .array(of: .string), .required)
.field("location", .geographicPoint2D)
.field("online_date", .double)
.field("left_likes_count", .int16)
.field("created_at", .double)
.field("chat_rooms_id", .array(of: .string), .required)
.field("is_admin", .bool, .required)
.create()
}
func create(req: Request) async throws -> HTTPStatus {
guard let phone = req.parameters.get("phone"), NSPredicate(format: "SELF MATCHES %@", "^[0-9+]{0,1}+[0-9]{5,16}$").evaluate(with: phone) else {
throw Abort(.badRequest)
}
try await User(phone: phone, gender: .notStated, name: .init(), isAdmin: try await User.query(on: req.db).count() == .zero).save(on: req.db)
return .ok
}
How can I fix this error?
Fa1zer commented
I forgot to assign the gender value in init. This is the stupidest mistake I've ever made...