データストアへのアクセス
Kongは、「DAO」と呼ばれるクラスを通じてモデルレイヤーとやり取りします。この 章では、データストアとのやり取りで使用できるAPIについて詳しく説明します。
Kong はデータストアとして PostgreSQL をサポートしています。
kong.db
Kongのすべてのエンティティは、次のように表されます。
- エンティティがデータストア内のどのテーブルに関連するか、 外部キー、null以外の制約など、そのフィールドの制約を記述するスキーマ。 このスキーマはプラグイン設定の章で記述されるテーブルです。
- 現在使用中のデータベースにマッピングする
DAO
クラスのインスタンス。 このクラスのメソッドはスキーマを消費し、 そのタイプのエンティティを挿入、更新、選択、削除するためのメソッドを公開します。
Kong のコアエンティティは、サービス、ルート、コンシューマ、プラグインです。
これらはすべて、kong.db
グローバルシングルトンを通してデータアクセスオブジェクト(DAO)としてアクセスできます。
-- Core DAOs
local services = kong.db.services
local routes = kong.db.routes
local consumers = kong.db.consumers
local plugins = kong.db.plugins
Kong のコアエンティティとプラグインのカスタムエンティティの両方が kong.db.*
から利用可能です。
DAO Lua API
DAOクラスは、一般的にKongのエンティティにマッピングされる、データストアの特定のテーブルで実行される操作を担当します。サポートされているすべての基礎となるデータベースは同じインターフェースに準拠するため、すべてがDAOと互換性を持つようになります。
たとえば、サービスとプラグインの挿入は次のように簡単です。
local inserted_service, err = kong.db.services:insert({
name = "httpbin",
url = "http://httpbin.org",
})
local inserted_plugin, err = kong.db.plugins:insert({
name = "key-auth",
service = inserted_service,
})
プラグインで使用されている DAO の実際の例については、 Key-Auth プラグインのソースコードを参照してください。