Serveur Express
1 min
Le serveur Express se lance via la fonction start. importée depuis le module @fasstech/oip-starter-utils/server.
Ci-dessous un exemple de configuration.
import { logger } from '@fasstech/logger';
import { start as startServer } from '@fasstech/oip-starter-utils/server';
import * as R from 'ramda';
import { $Project, getProjectId, setProjectExternalId, updateProject } from '../entities/Project/index.mjs';
import loadSchemaTypes from '../views/server.mjs';
import { ExtendedProcessType } from './graphql/types/extended-process-type.mjs';
import { extendProcess } from './process/extend-process.mjs';
const isProductionEnv = process.env.NODE_ENV === 'production';
const schemaTypes = await loadSchemaTypes();
let serverConfig = {
logger,
graphql: {
resolvers: R.pipe(R.map(R.prop('resolvers')), R.reject(R.anyPass([R.isNil, R.isEmpty])))(schemaTypes),
typeDefs: R.concat(R.map(R.prop('typeDefs'), schemaTypes), [ExtendedProcessType])
},
process: {
resolveFirstView: () => Promise.resolve('DONNEES_CONTRAT'),
extendWith: extendProcess
},
session: {
validateProjectId: async ({ projectId }) => {
const project = await $Project(projectId);
return project != null;
},
resolveProjectFromContext: async (args) => {
let externalId = R.prop('externalId', args);
if (!isProductionEnv) {
const { getMockContext } = await import('../mocks/context.mjs');
externalId = getMockContext().externalId;
}
let project = await $Project({ externalId });
if (project == null) {
project = await $Project();
if (externalId != null) project = setProjectExternalId(externalId, project);
project = await updateProject(project);
}
return getProjectId(project);
}
}
};
await startServer(serverConfig);Une fois cette configuration terminĂ©e, le serveur Express peut ĂȘtre dĂ©marrĂ© :
npm run server:dev