mirror of
https://github.com/OneUptime/oneuptime.git
synced 2026-04-06 00:32:12 +02:00
49 lines
1.2 KiB
TypeScript
49 lines
1.2 KiB
TypeScript
import { AirtableApiKey, AirtableBaseId } from "../EnvironmentConfig";
|
|
import Dictionary from "../../Types/Dictionary";
|
|
import PositiveNumber from "../../Types/PositiveNumber";
|
|
import AirtableLib, { FieldSet, Records } from "airtable";
|
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
|
|
export type AirtableRecords = Records<FieldSet>;
|
|
|
|
class Airtable {
|
|
private static base = new AirtableLib({ apiKey: AirtableApiKey }).base(
|
|
AirtableBaseId,
|
|
);
|
|
|
|
@CaptureSpan()
|
|
public static async find(
|
|
tableName: string,
|
|
airtableView: string,
|
|
limit: PositiveNumber,
|
|
): Promise<AirtableRecords> {
|
|
return this.base(tableName)
|
|
.select({ view: airtableView, pageSize: limit.toNumber() })
|
|
.firstPage();
|
|
}
|
|
|
|
@CaptureSpan()
|
|
public static async update(
|
|
tableName: string,
|
|
id: string,
|
|
fields: Dictionary<string>,
|
|
): Promise<void> {
|
|
await this.base(tableName).update(id, fields);
|
|
}
|
|
|
|
@CaptureSpan()
|
|
public static async create(
|
|
tableName: string,
|
|
fields: Dictionary<string>,
|
|
): Promise<void> {
|
|
await this.base(tableName).create(fields);
|
|
}
|
|
|
|
@CaptureSpan()
|
|
public static async delete(tableName: string, id: string): Promise<void> {
|
|
await this.base(tableName).destroy(id);
|
|
}
|
|
}
|
|
|
|
export default Airtable;
|