How to add autoincrement field in Vapor

We have created a new model in Vapor with id as UUID and other fields.

// Property Wrapper
@ID(key: .id)
var id: UUID?

Now we got a requirment to add an autoincrement field which can be used to identify the object like model_number. Since the default id field is UUID we cannot use the exisitng id for this purpose. If we are creating a new model with this scenario, we could have used the id as an autoincrement identifier:

// Migration
.field("id", .int, .identifier(auto: true))

Since we need the id as UUID and we need an additional autoincrement field to use it as a model_number, we used a custom type serial. PostgreSQL has the data types smallserial, serial and bigserial, these are similar to AUTO_INCREMENT property supported by some other databases. The type name serial creates an integer columns. The type name bigserial creates a bigint column. The type name smallserial creates a smallint column.

We can use the serial type to create an autoincrment field in Vapor.

// Property Wrapper
@Field(key: "model_number")
var modelNumber: Int?

// Migration
.field("model_number", .custom("serial"))

No need to assign any values while create and update, the values will be autoincremented by the database.

blog comments powered by Disqus
S3 integration with Vapor >>
<< Sendgrid integration with V...