@accounter/server
Version:
47 lines (37 loc) • 1.29 kB
text/typescript
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';
({
scope: Scope.Singleton,
global: true,
})
export class GreenInvoiceProvider {
constructor((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);
}
}