使用 vapor + fluent 的字符串主键

string primary key with vapor + fluent

我想要一个 table,其中一个字符串列作为主键,而不必使用原始 SQL 语法。

这是我的流利程度"preparation":

static func prepare(_ database: Database) throws {    
    try database.create("roles") { roles in
        roles.id("name")
        roles.string("readable_name")
    }
}

根据我的测试和文档,结果查询将类似于:

CREATE TABLE `roles` (`name` INTEGER PRIMARY KEY NOT NULL, `readable_name` TEXT NOT NULL)

到目前为止,我无法找到一种方法将字符串(TEXT、VARCHAR、...)作为没有原始 SQL 语法的主键,我想知道是否可以使用 vapor 附带的流畅查询构建器来做或不做。

在 Fluent 2 中添加了对除 INT 之外的 ID 类型的支持。

https://docs.vapor.codes/2.0/fluent/model/#id-type