add は、テーブルにレコードを登録します。対象のテーブルが主キーを持っており、同じキーのレコードが既に存在している場合には、既存レコードのカラムの値を更新します。
(ドキュメントルート)/droonga/addPOST対応していません。
typeaddbodytypeadd.result対象のテーブルが主キーを持つ場合:
{
"table" : "<テーブル名>",
"key" : "<レコードの主キー>",
"values" : {
"<カラム1の名前>" : <値1>,
"<カラム2の名前>" : <値2>,
...
}
}
対象のテーブルが主キーを持たない場合:
{
"table" : "<テーブル名>",
"values" : {
"<カラム1の名前>" : <値1>,
"<カラム2の名前>" : <値2>,
...
}
}
本項の説明では以下のような2つのテーブルが存在している事を前提として、典型的な使い方を通じて add コマンドの使い方を説明します。
Personテーブル(主キー無し):
| name | job (Jobテーブルを参照) |
| Alice Arnold | announcer |
| Alice Cooper | musician |
Jobテーブル(主キー有り):
| _key | label |
| announcer | announcer |
| musician | musician |
主キーを持たないテーブルにレコードを追加する場合は、 key を指定せずに table と values だけを指定します。
{
"type" : "add",
"body" : {
"table" : "Person",
"values" : {
"name" : "Bob Dylan",
"job" : "musician"
}
}
}
=> {
"type" : "add.result",
"body" : true
}
add は再帰的に動作します。別のテーブルを参照しているカラムについて、参照先のテーブルに存在しない値を指定した場合、エラーにはならず、参照先のテーブルにも同時に新しいレコードが追加されます。例えば、以下は テーブルに存在しない主キー doctor を伴って Person テーブルにレコードを追加します。
{
"type" : "add",
"body" : {
"table" : "Person",
"values" : {
"name" : "Alice Miller",
"job" : "doctor"
}
}
}
=> {
"type" : "add.result",
"body" : true
}
この時、Jobテーブルには主キーだけが指定された新しいレコードが自動的に追加されます。
| _key | label |
| announcer | announcer |
| musician | musician |
| doctor | (空文字) |
主キーを持つテーブルにレコードを追加する場合は、 table、key、values のすべてを指定します。
{
"type" : "add",
"body" : {
"table" : "Job",
"key" : "writer",
"values" : {
"label" : "writer"
}
}
}
=> {
"type" : "add.result",
"body" : true
}
主キーを持つテーブルに対する、既存レコードの主キーを伴う add コマンドは、既存レコードのカラムの値の更新操作と見なされます。
{
"type" : "add",
"body" : {
"table" : "Job",
"key" : "doctor",
"values" : {
"label" : "doctor"
}
}
}
=> {
"type" : "add.result",
"body" : true
}
主キーを持たないテーブルのレコードに対しては、値の更新操作はできません(常にレコードの追加と見なされます)。
tablekey既に同じ主キーを持つレコードが存在している場合は、レコードの各カラムの値を更新します。
対象のテーブルが主キーを持たない場合は、指定しても単に無視されます。
valuesnull指定されなかったカラムの値は登録・更新されません。
このコマンドは、レコードを正常に追加または更新できた場合、真偽値 true をbody 、200 を statusCode としたレスポンスを返します。以下はレスポンスの body の例です。
true
このコマンドは一般的なエラーに加えて、以下のエラーを場合に応じて返します。
MissingTableParametertable パラメータの指定を忘れていることを示します。ステータスコードは 400 です。
MissingPrimaryKeyParameter主キーが存在するテーブルに対して、key パラメータの指定を忘れていることを示します。ステータスコードは 400 です。
InvalidValueカラムに設定しようとした値が不正である(例:位置情報型や整数型のカラムに通常の文字列を指定した、など)事を示します。ステータスコードは 400 です。
UnknownTable指定されたデータセット内に、指定されたレコードが存在していない事を示します。ステータスコードは 404 です。
UnknownColumn指定されたカラムがテーブルに存在しない未知のカラムである事を示します。ステータスコードは 400 です。