Hummingbird Fluent

Hummingbird 与 Fluent 数据库 ORM 的接口。

Hummingbird 本身不包含任何数据库驱动或 ORM。 这个库提供了与 Vapor 数据库 ORM 的连接。 Vapor 团队非常慷慨和有远见,确保了 FluentKit 可以独立于 Vapor 使用。 这个包将 Fluent 的功能整合在一起。 它还为 Hummingbird Persist 框架提供了一个驱动程序。

用法

以下代码初始化一个 SQLite 数据库并添加一个名为 CreateTodo 的迁移。

import FluentSQLiteDriver
import HummingbirdFluent

let logger = Logger(label: "MyApp")
let fluent = Fluent(logger: logger)
// add sqlite database
fluent.databases.use(.sqlite(.file("db.sqlite")), as: .sqlite)
// add migration
await fluent.migrations.add(CreateTodo())
// migrate
if arguments.migrate {
    try fluent.migrate().wait()
}

Fluent 可以像下面这样在路由中使用。

let router = Router()
router
    .group("todos")
    .get(":id") { request, context in 
        guard let id = context.parameters.get("id", as: UUID.self) else { return request.failure(HTTPError(.badRequest)) }
        return Todo.find(id, on: fluent.db())
    }

这里我们返回一个 Todo,其 id 在请求 URI 中指定。

您可以将这些整合在一起,创建一个使用路由器的应用程序,并将 fluent 添加到其服务列表中。

var app = Application(router: router)
// add the fluent service to the application so it can manage shutdown correctly
app.addServices(fluent)
try await app.runService()

文档

HummingbirdFluent 的参考文档可以在这里找到,您可以在这里找到更多关于 Fluent 的文档。