kintone-rest-api-client deleteAllRecords サンプル

kintone-rest-api-clientのdeleteAllRecordsを使った動作検証用のサンプルコードです。

# 環境

* macOS
* node v16.13.1
* @kintone/rest-api-client ^3.1.11

# サンプルコード

```javascript
require('dotenv').config()
const log4js = require('log4js')
const { KintoneRestAPIClient } = require('@kintone/rest-api-client')
const client = new KintoneRestAPIClient({
  baseUrl: process.env.KINTONE_DOMAIN,
  auth: { apiToken: process.env.KINTONE_API_TOKEN }
});

log4js.configure({
  appenders: {
    out: { type: 'stdout'}
  },
  categories: {
    default: { appenders: ['out'], level: 'debug'}
  }
})
const logger = log4js.getLogger();

// kintoneのレコードID配列からレコードIDオブジェクトの配列を生成する
// 引数：kintoneRecordIdsArray・・・kintoneのレコードID配列 ex. [1,25,7,10]
// return：kintoneのレコードIDオブジェクトの配列 ex. [{id: 1}, {id: 25}, {id: 7}, {id: 10}]
module.exports.generateObjectForDeletion = (kintoneRecordIdsArray) => {
  try {
    logger.debug(`param: ${JSON.stringify(kintoneRecordIdsArray)}`)
    const kintoneArrayOfObject = []
    for(const recordId of kintoneRecordIdsArray) {
      kintoneArrayOfObject.push({ id: recordId })
    }
    return kintoneArrayOfObject
  } catch (error) {
    logger.debug(`error: ${error}`)
  }
}

// kintoneのレコードID配列から対象のレコードを削除する
// 引数：kintoneRecordIdsArray・・・kintoneのレコードID配列 ex. [1,25,7,10]
// return： kintone-rest-api-client の deleteAllRecordsの戻り値
module.exports.deleteResearchers = async (kintoneRecordIdsArray) => {
  try {
    logger.debug(`param: ${JSON.stringify(kintoneRecordIdsArray)}`)
    const kintoneArrayOfObject = this.generateObjectForDeletion(kintoneRecordIdsArray)
    const response = await client.record.deleteAllRecords({
      app: process.env.KINTONE_APPID, records: kintoneArrayOfObject
    });
    logger.debug(response)
    return response
  } catch (error) {
    logger.debug(`error header: ${error}`)
    logger.debug(`error all: ${JSON.stringify(error)}`)
    logger.debug(`error kintoneRestAPIError: ${JSON.stringify(error.error)}`)
  }
}
```


# テストコード

```javascript
require('dotenv').config()
const { deleteResearchers, generateObjectForDeletion } = require('../deleteKintoneResearcher');

test('削除対象のレコードが存在しない時', async () => {
    const records = [9999]
    const response = await deleteResearchers(records)
    expect(response).toEqual(undefined);
});

test('削除対象のレコードが1件の時', async () => {
  const records = [21]
  const response = await deleteResearchers(records)
  expect(response).toEqual({});
});

test('削除対象のレコードが5件の時で、存在しないレコードがある場合はロールバックされる', async () => {
  const records = [1,2,5,7,99999]
  const response = await deleteResearchers(records)
  expect(response).toEqual({});
});

test('削除対象のレコード配列1件からdeleteAllRecords用の配列オブジェクトを生成する', () => {
  const records = [22]
  const response = generateObjectForDeletion(records)
  expect(response).toEqual([{ id: 22}]);
});

test('削除対象のレコード配列5件からdeleteAllRecords用の配列オブジェクトを生成する', () => {
  const records = [1,2,3,5,6]
  const match = [
    { id: 1},
    { id: 2},
    { id: 3},
    { id: 5},
    { id: 6},
  ]
  const response = generateObjectForDeletion(records)
  expect(response).toEqual(match);
});
```


# 参考資料


https://nodejs.org/en/

https://jestjs.io/ja/

https://log4js-node.github.io/log4js-node/index.html

https://www.npmjs.com/package/dotenv


## kintone-rest-api-client

https://github.com/kintone/js-sdk/tree/master/packages/rest-api-client

https://github.com/kintone/js-sdk/blob/master/packages/rest-api-client/docs/record.md#deleteAllRecords

https://github.com/kintone/js-sdk/blob/master/packages/rest-api-client/docs/errorHandling.md#kintoneallrecordserror