@accounter/server
Version:
93 lines • 4.08 kB
JavaScript
import { createApplication, Scope } from 'graphql-modules';
import postgres from 'pg';
import { buildSubgraphSchema } from '@apollo/subgraph';
import { mergeResolvers, mergeTypeDefs } from '@graphql-tools/merge';
import { AnthropicProvider } from './modules/app-providers/anthropic.js';
import { GoogleDriveProvider } from './modules/app-providers/google-drive/google-drive.provider.js';
import { corporateTaxesModule } from './modules/corporate-taxes/index.js';
import { countriesModule } from './modules/countries/index.js';
import { depreciationModule } from './modules/depreciation/index.js';
import { vatModule } from './modules/vat/index.js';
import { accountantApprovalModule } from './modules/accountant-approval/index.js';
import { CloudinaryProvider } from './modules/app-providers/cloudinary.js';
import { CoinMarketCapProvider } from './modules/app-providers/coinmarketcap.js';
import { DBProvider } from './modules/app-providers/db.provider.js';
import { GreenInvoiceProvider } from './modules/app-providers/green-invoice.js';
import { businessTripsModule } from './modules/business-trips/index.js';
import { chargesModule } from './modules/charges/index.js';
import { chartsModule } from './modules/charts/index.js';
import { commonModule } from './modules/common/index.js';
import { cornJobsModule } from './modules/corn-jobs/index.js';
import { dividendsModule } from './modules/dividends/index.js';
import { documentsModule } from './modules/documents/index.js';
import { exchangeRatesModule } from './modules/exchange-rates/index.js';
import { financialAccountsModule } from './modules/financial-accounts/index.js';
import { financialEntitiesModule } from './modules/financial-entities/index.js';
import { ledgerModule } from './modules/ledger/index.js';
import { miscExpensesModule } from './modules/misc-expenses/index.js';
import { reportsModule } from './modules/reports/index.js';
import { salariesModule } from './modules/salaries/index.js';
import { sortCodesModule } from './modules/sort-codes/index.js';
import { tagsModule } from './modules/tags/index.js';
import { transactionsModule } from './modules/transactions/index.js';
import { ENVIRONMENT } from './shared/tokens.js';
const { Pool } = postgres;
export async function createGraphQLApp(env) {
return createApplication({
schemaBuilder: ({ typeDefs, resolvers }) => {
return buildSubgraphSchema({
typeDefs: mergeTypeDefs(typeDefs),
resolvers: mergeResolvers(resolvers),
});
},
modules: [
commonModule,
accountantApprovalModule,
businessTripsModule,
chargesModule,
cornJobsModule,
depreciationModule,
documentsModule,
dividendsModule,
exchangeRatesModule,
financialAccountsModule,
financialEntitiesModule,
ledgerModule,
miscExpensesModule,
reportsModule,
salariesModule,
sortCodesModule,
tagsModule,
transactionsModule,
chartsModule,
corporateTaxesModule,
countriesModule,
vatModule,
],
providers: [
{
provide: Pool,
useFactory: () => new Pool({
user: env.postgres.user,
password: env.postgres.password,
host: env.postgres.host,
port: Number(env.postgres.port),
database: env.postgres.db,
ssl: env.postgres.ssl ? { rejectUnauthorized: false } : false,
}),
},
DBProvider,
CloudinaryProvider,
GreenInvoiceProvider,
CoinMarketCapProvider,
AnthropicProvider,
GoogleDriveProvider,
{
provide: ENVIRONMENT,
useValue: env,
scope: Scope.Singleton,
},
],
});
}
//# sourceMappingURL=modules-app.js.map