rtc4js v1.1.6
RapidTableConnector for Javascript
RapidTableConnector provides an SDK that allows easy CRUD operations using the Rest API provided by RapidTable.
Getting started
Installation
npm install rtc4js
Usage - Create Connector
Create a connection instance
import { RapidTableConnector } from 'rtc4js';
const connector = RapidTableConnector.builder()
.accessId("developer@example.com")
.accessKey("************************")
.endpoint("rapid-table.example.com")
.build();
Usage - Drive
Drive - Search assets
Search for Drive assets in any workspace.
import { DriveComponentType, DriveResponse, DriveSearchRequest } from 'rtc4js';
const request = DriveSearchRequest.builder() .workspaceId('RTC4J_TEST_WORKSPACE_ID') .componentType(DriveComponentType.DRIVE) .page(0) .size(15) .build(); const results = await connector.search(request, DriveResponse.of); console.log('results', results);
### Drive - Count assets
> Count Drive assets in this any workspace.
```js
import { DriveComponentType, DriveCountRequest } from 'rtc4js';
const request = DriveCountRequest.builder()
.workspaceId('RTC4J_TEST_WORKSPACE_ID')
.componentType(DriveComponentType.REPORT)
.query('png')
.build();
const results = await connector.count(request);
console.log('results', results);
Drive - Get object
Get specific object data in this any workspace
import * as fs from 'fs'; import { DriveGetMetadataRequest, metadataRequest, DriveResponse, DriveGetObjectRequest } from 'rtc4js';
const metadataRequest = DriveGetMetadataRequest.builder() .workspaceId('RTC4J_TEST_WORKSPACE_ID') .objectId('RTC4J_TEST_OBJECT_ID') .build(); try { const metadata = await connector.get(metadataRequest, DriveResponse.of);
// download
const objectRequest = DriveGetObjectRequest.builder()
.path(metadata.path)
.build();
const object = await connector.getObject(objectRequest);
fs.writeFileSync(object.fileName, object.data, 'binary');
} catch (ex) { console.error(ex); }
---
## Usage - Projects Report
### Projects - Get schema
> Gets schema information within a specific project in this any workspace.
```java
const request = SchemaGetRequest.builder()
.workspaceId('RTC4J_TEST_WORKSPACE_ID')
.projectId('RTC4J_TEST_PROJECT_ID')
.build();
const results = await connector.get<SchemaField[]>(request);
Projects - Search reports
Search reports for a specific project in this any workspace.
import { ReportSearchRequest, ReportResponse } from 'rtc4js';
const request = ReportSearchRequest.builder() .workspaceId('RTC4J_TEST_WORKSPACE_ID') .projectId('RTC4J_TEST_PROJECT_ID') .page(0) .size(15) .build(); const results = await connector.search(request, ReportResponse.of); console.log('results', results);
### Projects - Search reports (Bulk operation)
> Search reports for multiple projects in this any workspace.
```js
import { ReportBulkSearchRequest, ReportResponse } from 'rtc4js';
const request = ReportBulkSearchRequest.builder()
.workspaceId("EXAMPLE WORKSPACE_ID")
.projectIds("EXAMPLE PROJECT_ID1", "EXAMPLE PROJECT_ID2")
.page(0)
.size(15)
.build();
const response = connector.search(request, ReportResponse.of);
Projects - Count reports
Count reports for a specific project in this any workspace.
import { ReportCountRequest } from 'rtc4js';
const request = ReportCountRequest.builder() .workspaceId('RTC4J_TEST_WORKSPACE_ID') .projectId('RTC4J_TEST_PROJECT_ID') .build(); const results = await connector.count(request);
### Projects - Count reports (Bulk operation)
> Count reports for for multiple projects in this any workspace.
```js
import { ReportBulkCountRequest } from 'rtc4js';
const request = ReportBulkCountRequest.builder()
.workspaceId('RTC4J_TEST_WORKSPACE_ID')
.projectIds("EXAMPLE PROJECT_ID1", "EXAMPLE PROJECT_ID2")
.build();
const results = await connector.count(request);
Projects - Get report
Get report for a specific project in this any workspace.
import { ReportGetRequest, ReportResponse } from 'rtc4js';
const request = ReportGetRequest.builder() .workspaceId('RTC4J_TEST_WORKSPACE_ID') .projectId('RTC4J_TEST_PROJECT_ID') .reportId('RTC4J_TEST_REPORT_ID') .build(); const report = await connector.get(request, ReportResponse.of); console.log('report', report);
### Projects - Get reports (Bulk operation)
> Get report for a specific project in this any workspace.
```js
import { ReportBulkGetRequest, ReportResponse } from 'rtc4js';
const request = ReportBulkGetRequest.builder()
.workspaceId('RTC4J_TEST_WORKSPACE_ID')
.projectId('RTC4J_TEST_PROJECT_ID')
.ids("EXAMPLE REPORT_ID1", "EXAMPLE REPORT_ID2", "EXAMPLE REPORT_ID3")
.build();
const reports = await connector.bulkGet(request, ReportResponse.of);
console.log('reports', reports);
Projects - Get report object
Get report object for a specific object data in this any workspace.
import * as fs from 'fs'; import { ReportGetRequest, ReportResponse, ReportGetObjectRequest } from 'rtc4js';
const request = ReportGetRequest.builder() .workspaceId('RTC4J_TEST_WORKSPACE_ID') .projectId('RTC4J_TEST_PROJECT_ID') .reportId('RTC4J_TEST_REPORT_ID') .build(); try { const report = await connector.get(request, ReportResponse.of); console.log('report', report); const testImageFieldId = 'BAJNu8NgYi'; const images = report.getFieldAsList(testImageFieldId);
if (images.length) {
// download
const objectRequest = ReportGetObjectRequest.builder()
.target(images[0])
.build();
const object = await connector.getObject(objectRequest);
console.log('data', object.fileName, object.contentType, object.contentLength);
fs.writeFileSync(object.fileName, object.data, 'binary');
}
} catch (ex) { console.error(ex); }
### Projects - Generate Report ID
> This is an endpoint that generates IDs for reports in advance.
```js
import { ReportGenerateIdRequest } from 'rtc4js';
const requestBuilder = ReportGenerateIdRequest.builder()
.workspaceId('RTC4J_TEST_WORKSPACE_ID')
.projectId('RTC4J_TEST_PROJECT_ID')
.build();
const response = await connector.generateId(requestBuilder);
console.log('Report generateId = ' + response);
Projects - Create Reports
Create reports for a specific project in this any workspace.
import { ReportCreateRequest, ReportResponse } from 'rtc4js';
const requestBuilder = ReportCreateRequest.builder() .workspaceId('RTC4J_TEST_WORKSPACE_ID') .projectId('RTC4J_TEST_PROJECT_ID') // A sample dummy field is shown in the next section. .append(makeDummyFields()) .build(); const response = await connector.create(requestBuilder, ReportResponse.of); // FIXME console.log('Report create = ' + response);
### Projects - Update Reports
> Update reports for a specific project in this any workspace.
```js
import { ReportGetRequest, ReportUpdateRequest, ReportResponse } from 'rtc4js';
// Get report
const request = ReportGetRequest.builder()
.workspaceId('RTC4J_TEST_WORKSPACE_ID')
.projectId('RTC4J_TEST_PROJECT_ID')
.reportId('RTC4J_TEST_REPORT_ID')
.build();
const response = await connector.get(request, ReportResponse.of);
// Update report
const testUpdateFieldId = 'B97LjXOPr7';
response.setField(testUpdateFieldId, response.getFieldAsString(testUpdateFieldId) + '-update');
const requestBuilder = ReportUpdateRequest.builder()
.workspaceId('RTC4J_TEST_WORKSPACE_ID')
.projectId('RTC4J_TEST_PROJECT_ID')
.append('RTC4J_TEST_REPORT_ID', response.fields)
.build();
const updated = await connector.update(requestBuilder, ReportResponse.of);
console.log('Report update = ' + updated);
Projects - Delete Reports
Delete reports for a specific project in this any workspace.
import { ReportSearchRequest, ReportDeleteRequest, ReportResponse } from 'rtc4js';
// Search reports const request = ReportSearchRequest.builder() .workspaceId('RTC4J_TEST_WORKSPACE_ID') .projectId('RTC4J_TEST_PROJECT_ID') .size(100) .gte('CssVTEBWnK', '2023-05-09T00:00:00.000Z') .build(); const response = await connector.search(request, ReportResponse.of); console.log('Report search = ' + response.length);
if (response.length) { // Delete reports const ids = response.map(({ id }) => id); const deleteRequest = ReportDeleteRequest.builder() .workspaceId('RTC4J_TEST_WORKSPACE_ID') .projectId('RTC4J_TEST_PROJECT_ID') .ids(...ids) .build(); await connector.delete(deleteRequest); }
### Projects - Put report object
> Put report object for a specific project in this any workspace.
```js
import * as fs from 'fs';
import { ReportPutObjectRequest } from 'rtc4js';
const buffer = await fs.readFileSync('example.jpg');
const request = ReportPutObjectRequest.builder()
.workspaceId('RTC4J_TEST_WORKSPACE_ID')
.projectId('RTC4J_TEST_PROJECT_ID')
.reportId('RTC4J_TEST_REPORT_ID')
.append(buffer, 'example.jpg')
.build();
const response = await connector.putObject(request);
console.log('Report putObject = ' + response);
Projects - Delete Report object
Delete specific report object data in this any workspace
import { ReportDeleteObjectRequest } from 'rtc4js';
// FIXME const target = "reports/**/**/**/objects/**?v=9999999999"; const request = ReportDeleteObjectRequest.builder() .target(target) .build(); await connector.delete(request);
### Projects - Aggregate report values
> Aggregates the values of a report field for multiple projects in this any workspace
```js
import { ReportAggregateValueRequest, AggregateValueResponse } from 'rtc4js';
const request = ReportAggregateValueRequest.builder()
.workspaceId('RTC4J_TEST_WORKSPACE_ID')
.projectIds("EXAMPLE PROJECT_ID1", "EXAMPLE PROJECT_ID2")
.fieldId("EXAMPLE_TARGET_FIELD_ID")
.build();
const results = await connector.bulkGet(request, AggregateValueResponse.of);
Sample code for report registration
function makeDummyFields(): { [key: string]: unknown } {
const fields: { [key: string]: unknown } = {};
// Number
fields['numberFieldId'] = 4;
// Text
fields['textFieldId'] = 'キーワード 3';
// DateTime
fields['dateTimeFieldId'] = new Date(2023, 5, 10, 12, 34, 45);
// Date
fields['dateFieldId'] = new Date(2023, 6, 11, 12, 34, 45);
// Time
fields['timeFieldId'] = new Date(2023, 5, 10, 13, 54, 2);
// Check
fields['checkFieldId'] = ['Check 2', 'Check 1'];
// Select
fields['SelectFieldId'] = 'Select 1';
// Radio
fields['radioFieldId'] = 'Radio 3';
// Check (Mode ref)
fields['checkRefFieldId'] = ['36', '33', '50'];
// Select (Mode ref)
fields['selectRefFieldId'] = '41';
// Radio (Mode ref)
fields['radioRefFieldId'] = '44';
// Tags
fields['tagFieldId'] = ['tagId1', 'tagId2'];
// Phone number
fields['phoneFieldId'] = '090-1234-7890';
// E-Mail
fields['emailFieldId'] = 'mail@example.com';
// Zip code
fields['zipCodeFieldId'] = '123-4567';
// File path
fields['fileFieldId'] = ['reports/workspaceId/projectId/reportId/objects/objectId?v=1674895052825'];
// User Ids
fields['userFieldId'] = ['userId1', 'userId2'];
// Projects
fields['projectFieldId'] = ['projectId'];
// Rate
fields['rateFieldId'] = 5;
// Url
fields['urlFieldId'] = 'https://example.com';
return fields;
}