Added more error checking and also fixed yet more build errors

This commit is contained in:
Darien Kindlund
2024-01-25 12:08:52 -05:00
parent 1a7cb5a010
commit 72ec7878b6
@@ -124,6 +124,10 @@ class Airtable_DocumentLoaders implements INode {
const loader = new AirtableLoader(airtableOptions) const loader = new AirtableLoader(airtableOptions)
if (!baseId || !tableId) {
throw new Error('Base ID and Table ID must be provided.')
}
let docs = [] let docs = []
if (textSplitter) { if (textSplitter) {
@@ -213,7 +217,7 @@ class AirtableLoader extends BaseDocumentLoader {
return this.loadLimit() return this.loadLimit()
} }
protected async fetchAirtableData(url: string, data: any): Promise<AirtableLoaderResponse> { protected async fetchAirtableData(url: string, data: AirtableLoaderRequest): Promise<AirtableLoaderResponse> {
try { try {
const headers = { const headers = {
Authorization: `Bearer ${this.accessToken}`, Authorization: `Bearer ${this.accessToken}`,
@@ -223,7 +227,11 @@ class AirtableLoader extends BaseDocumentLoader {
const response = await axios.post(url, data, { headers }) const response = await axios.post(url, data, { headers })
return response.data return response.data
} catch (error) { } catch (error) {
throw new Error(`Failed to fetch ${url} from Airtable: ${error}`) if (axios.isAxiosError(error)) {
throw new Error(`Failed to fetch ${url} from Airtable: ${error.message}, status: ${error.response?.status}`)
} else {
throw new Error(`Failed to fetch ${url} from Airtable: ${error}`)
}
} }
} }
@@ -259,7 +267,7 @@ class AirtableLoader extends BaseDocumentLoader {
private async loadAll(): Promise<Document[]> { private async loadAll(): Promise<Document[]> {
let data: AirtableLoaderRequest = { let data: AirtableLoaderRequest = {
pageSize: this.limit, maxRecords: this.limit,
view: this.viewId view: this.viewId
} }
@@ -272,7 +280,7 @@ class AirtableLoader extends BaseDocumentLoader {
do { do {
response = await this.fetchAirtableData(`https://api.airtable.com/v0/${this.baseId}/${this.tableId}`, data) response = await this.fetchAirtableData(`https://api.airtable.com/v0/${this.baseId}/${this.tableId}`, data)
returnPages.push.apply(returnPages, response.records) returnPages.push(...response.records)
data.offset = response.offset data.offset = response.offset
} while (response.offset !== undefined) } while (response.offset !== undefined)
return returnPages.map((page) => this.createDocumentFromPage(page)) return returnPages.map((page) => this.createDocumentFromPage(page))