LoginSignup
0
1

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-09-29

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

環境

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

サンプルコード

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)}`)
  }
}

テストコード

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);
});

参考資料

kintone-rest-api-client

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1