* feat: infra type added in admin module * feat: infra-resolver added in admin module * feat: feedback resolved * feat: deprecated tag added in some admin ResolveFields * build: update pnpm-lock file * feat: add field in infra type * feat: admin extends user partially * feat: admin extends user with omitting some fields * chore: remove unused imports * build: conflict resolve in pnpm lock file
113 lines
4.0 KiB
TypeScript
113 lines
4.0 KiB
TypeScript
import { NestFactory } from '@nestjs/core';
|
|
import {
|
|
GraphQLSchemaBuilderModule,
|
|
GraphQLSchemaFactory,
|
|
} from '@nestjs/graphql';
|
|
import { printSchema } from 'graphql/utilities';
|
|
import * as path from 'path';
|
|
import * as fs from 'fs';
|
|
import { ShortcodeResolver } from './shortcode/shortcode.resolver';
|
|
import { TeamCollectionResolver } from './team-collection/team-collection.resolver';
|
|
import { TeamEnvironmentsResolver } from './team-environments/team-environments.resolver';
|
|
import { TeamInvitationResolver } from './team-invitation/team-invitation.resolver';
|
|
import { TeamRequestResolver } from './team-request/team-request.resolver';
|
|
import { TeamMemberResolver } from './team/team-member.resolver';
|
|
import { TeamResolver } from './team/team.resolver';
|
|
import { UserCollectionResolver } from './user-collection/user-collection.resolver';
|
|
import { UserEnvironmentsResolver } from './user-environment/user-environments.resolver';
|
|
import { UserHistoryResolver } from './user-history/user-history.resolver';
|
|
import { UserRequestResolver } from './user-request/resolvers/user-request.resolver';
|
|
import { UserSettingsResolver } from './user-settings/user-settings.resolver';
|
|
import { UserResolver } from './user/user.resolver';
|
|
import { Logger } from '@nestjs/common';
|
|
import { AdminResolver } from './admin/admin.resolver';
|
|
import { TeamEnvsTeamResolver } from './team-environments/team.resolver';
|
|
import { TeamTeamInviteExtResolver } from './team-invitation/team-teaminvite-ext.resolver';
|
|
import { UserRequestUserCollectionResolver } from './user-request/resolvers/user-collection.resolver';
|
|
import { UserEnvsUserResolver } from './user-environment/user.resolver';
|
|
import { UserHistoryUserResolver } from './user-history/user.resolver';
|
|
import { UserSettingsUserResolver } from './user-settings/user.resolver';
|
|
import { InfraResolver } from './admin/infra.resolver';
|
|
|
|
/**
|
|
* All the resolvers present in the application.
|
|
*
|
|
* NOTE: This needs to be KEPT UP-TO-DATE to keep the schema accurate
|
|
*/
|
|
const RESOLVERS = [
|
|
InfraResolver,
|
|
AdminResolver,
|
|
ShortcodeResolver,
|
|
TeamResolver,
|
|
TeamEnvsTeamResolver,
|
|
TeamMemberResolver,
|
|
TeamCollectionResolver,
|
|
TeamTeamInviteExtResolver,
|
|
TeamEnvironmentsResolver,
|
|
TeamEnvsTeamResolver,
|
|
TeamInvitationResolver,
|
|
TeamRequestResolver,
|
|
UserResolver,
|
|
UserCollectionResolver,
|
|
UserEnvironmentsResolver,
|
|
UserEnvsUserResolver,
|
|
UserHistoryUserResolver,
|
|
UserHistoryResolver,
|
|
UserCollectionResolver,
|
|
UserRequestResolver,
|
|
UserRequestUserCollectionResolver,
|
|
UserSettingsResolver,
|
|
UserSettingsUserResolver,
|
|
];
|
|
|
|
/**
|
|
* All the custom scalars present in the application.
|
|
*
|
|
* NOTE: This needs to be KEPT UP-TO-DATE to keep the schema accurate
|
|
*/
|
|
const SCALARS = [];
|
|
|
|
/**
|
|
* Generates the GraphQL Schema SDL definition and writes it into the location
|
|
* specified by the `GQL_SCHEMA_EMIT_LOCATION` environment variable.
|
|
*/
|
|
export async function emitGQLSchemaFile() {
|
|
const logger = new Logger('emitGQLSchemaFile');
|
|
|
|
try {
|
|
const destination = path.resolve(
|
|
__dirname,
|
|
process.env.GQL_SCHEMA_EMIT_LOCATION ?? '../gen/schema.gql',
|
|
);
|
|
|
|
logger.log(`GQL_SCHEMA_EMIT_LOCATION: ${destination}`);
|
|
|
|
const app = await NestFactory.create(GraphQLSchemaBuilderModule);
|
|
await app.init();
|
|
|
|
const gqlSchemaFactory = app.get(GraphQLSchemaFactory);
|
|
|
|
logger.log(
|
|
`Generating Schema against ${RESOLVERS.length} resolvers and ${SCALARS.length} custom scalars`,
|
|
);
|
|
|
|
const schema = await gqlSchemaFactory.create(RESOLVERS, SCALARS, {
|
|
numberScalarMode: 'integer',
|
|
});
|
|
|
|
const schemaString = printSchema(schema);
|
|
|
|
logger.log(`Writing schema to GQL_SCHEMA_EMIT_LOCATION (${destination})`);
|
|
|
|
// Generating folders if required to emit to the given output
|
|
fs.mkdirSync(path.dirname(destination), { recursive: true });
|
|
fs.writeFileSync(destination, schemaString);
|
|
|
|
logger.log(`Wrote schema to GQL_SCHEMA_EMIT_LOCATION (${destination})`);
|
|
} catch (e) {
|
|
logger.error(
|
|
`Failed writing schema to GQL_SCHEMA_EMIT_LOCATION. Reason: ${e}`,
|
|
);
|
|
}
|
|
}
|