UNPKG

@accounter/server

Version:

47 lines (37 loc) 1.29 kB
import { Inject, Injectable, Scope } from 'graphql-modules'; import { init, Sdk } from '@accounter-toolkit/green-invoice-graphql'; import { ENVIRONMENT } from '@shared/tokens'; import type { Environment } from '@shared/types'; @Injectable({ scope: Scope.Singleton, global: true, }) export class GreenInvoiceProvider { constructor(@Inject(ENVIRONMENT) private env: Environment) {} private async init() { const id = this.env.greenInvoice.id; const secret = this.env.greenInvoice.secret; if (!id || !secret) { throw new Error('Environment variables not found'); } const greenInvoice = await init(id, secret); return greenInvoice; } public async getSDK(): Promise<Sdk> { try { const sdk = (await this.init()).sdk; return sdk; } catch (e) { console.error(e); throw new Error(`Green Invoice error: ${(e as Error).message}`); } } public async addExpenseDraftByFile(...params: Parameters<Sdk['addExpenseDraftByFile_mutation']>) { const sdk = await this.getSDK(); return sdk.addExpenseDraftByFile_mutation(...params); } public async searchDocuments(...params: Parameters<Sdk['searchDocuments_query']>) { const sdk = await this.getSDK(); return sdk.searchDocuments_query(...params); } }