UNPKG

ministry-platform-provider

Version:

TypeScript client library for Ministry Platform API integration

92 lines (81 loc) 3.38 kB
import { MinistryPlatformClient } from "../core/ministryPlatformClient.js"; import { TableQueryParams, TableRecord, QueryParams } from "../Interfaces/mpProviderInterfaces.js"; export class TableService { private client: MinistryPlatformClient; constructor(client: MinistryPlatformClient) { this.client = client; } /** * Returns the list of records from the specified table satisfying the provided search criteria. */ public async getTableRecords<T>(table: string, params?: TableQueryParams): Promise<T[]> { try { await this.client.ensureValidToken(); console.log('Fetching records from table:', table); console.log('Query Params:', params); const endpoint = `/tables/${encodeURIComponent(table)}`; const data = await this.client.getHttpClient().get<T[]>(endpoint, params as QueryParams); console.log('Fetched records:', data); return data; } catch (error) { console.error(`Error fetching records from table ${table}:`, error); throw error; } } /** * Creates new records in the specified table. */ public async createTableRecords<T extends TableRecord = TableRecord>( table: string, records: T[], params?: Pick<TableQueryParams, '$select' | '$userId'> ): Promise<T[]> { try { await this.client.ensureValidToken(); const endpoint = `/tables/${encodeURIComponent(table)}`; const result = await this.client.getHttpClient().post<T[]>(endpoint, { records }, params); return result; } catch (error) { console.error(`Error creating records in table ${table}:`, error); throw error; } } /** * Updates provided records in the specified table. */ public async updateTableRecords<T extends TableRecord = TableRecord>( table: string, records: T[], params?: Pick<TableQueryParams, '$select' | '$userId' | '$allowCreate'> ): Promise<T[]> { try { await this.client.ensureValidToken(); const endpoint = `/tables/${encodeURIComponent(table)}`; const result = await this.client.getHttpClient().put<T[]>(endpoint, { records }, params); return result; } catch (error) { console.error(`Error updating records in table ${table}:`, error); throw error; } } /** * Deletes multiple records from the specified table. */ public async deleteTableRecords<T extends TableRecord = TableRecord>( table: string, ids: number[], params?: Pick<TableQueryParams, '$select' | '$userId'> ): Promise<T[]> { try { await this.client.ensureValidToken(); // Combine the ids and other params const queryParams = { ...params, id: ids }; const endpoint = `/tables/${encodeURIComponent(table)}`; const result = await this.client.getHttpClient().delete<T[]>(endpoint, queryParams); return result; } catch (error) { console.error(`Error deleting records from table ${table}:`, error); throw error; } } }