backend/lib/seed/app-admin.ts
2025-05-14 21:45:16 +02:00

67 lines
2.2 KiB
TypeScript

import 'reflect-metadata';
import { authMiddleware, errorMiddleware, ctxMiddleware, complexityMiddleware } from '@seed/graphql/Middleware';
import Firebase from '@seed/services/auth/FirebaseService';
import { AdminResolvers } from '@src/__indexes/__resolvers.index.admin';
import { SettingsCache } from './graphql/Settings';
import { buildSchema } from 'type-graphql';
// eslint-disable-next-line @typescript-eslint/no-var-requires
const { ApolloServer } = require('apollo-server');
const PORT = process.env.PORT || 4001;
const bootstrap = async (): Promise<any> => {
process.env.NODE_ENV = 'local';
const settingsI = SettingsCache.getInstance();
await settingsI.refreshCache();
try {
const schema = await buildSchema({
resolvers: AdminResolvers as any,
authChecker: authMiddleware,
});
const server = new ApolloServer({
// typeDefs,
// resolvers,
schema,
formatError: errorMiddleware,
formatResponse: (response): any => {
return response;
},
context: ctxMiddleware,
tracing: false,
plugins: [
{
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
requestDidStart: () => ({
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
didResolveOperation({ request, document }) {
return complexityMiddleware(schema, request.variables, document);
},
}),
},
],
});
try {
const token = await Firebase.getInstance().createTokenId(process.env.TEST_ADMIN_EMAIL ? process.env.TEST_ADMIN_EMAIL : '');
console.log(token);
} catch (error) {
console.log('no token available');
}
server.listen(PORT).then(({ url }) => {
console.log(`🚀 Server ready at ${url}`);
});
} catch (error) {
console.log('[GRAPH ERROR]', error);
throw error;
}
};
bootstrap();