Server.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import { Configuration, Inject, InjectorService } from '@tsed/di';
  2. import { PlatformApplication } from '@tsed/common';
  3. import '@tsed/platform-express'; // /!\ keep this import
  4. import bodyParser from 'body-parser';
  5. import compress from 'compression';
  6. import cookieParser from 'cookie-parser';
  7. import methodOverride from 'method-override';
  8. import '@tsed/swagger';
  9. import { TypeORMService } from '@tsed/typeorm';
  10. import { ConnectionOptions } from 'typeorm';
  11. export const rootDir = __dirname;
  12. const connectionOptions: ConnectionOptions = {
  13. type: process.env.TYPEORM_CONNECTION,
  14. host: process.env.TYPEORM_HOST,
  15. database: process.env.TYPEORM_DATABASE,
  16. username: process.env.TYPEORM_USERNAME,
  17. password: process.env.TYPEORM_PASSWORD,
  18. synchronize: true,
  19. logging: true,
  20. } as ConnectionOptions;
  21. @Configuration({
  22. rootDir,
  23. acceptMimes: ['application/json'],
  24. httpPort: process.env.PORT || 8080,
  25. httpsPort: false, // CHANGE
  26. mount: {
  27. '/': [
  28. `${rootDir}/controllers/*.ts`,
  29. `${rootDir}/middlewares/*.ts`,
  30. ],
  31. },
  32. componentsScan: [
  33. `${rootDir}/services/*.ts`,
  34. ],
  35. typeorm: [
  36. {
  37. ...connectionOptions,
  38. entities: [
  39. `${rootDir}/entities/*{.ts,.js}`,
  40. ],
  41. migrations: [
  42. `${rootDir}/migrations/*{.ts,.js}`,
  43. ],
  44. subscribers: [
  45. `${rootDir}/subscribers/*{.ts,.js}`,
  46. ],
  47. } as ConnectionOptions,
  48. ],
  49. swagger: [
  50. {
  51. path: '/docs',
  52. specVersion: '3.0.1',
  53. },
  54. ],
  55. exclude: [
  56. '**/*.spec.ts',
  57. ],
  58. })
  59. export class Server {
  60. @Inject()
  61. app: PlatformApplication;
  62. @Configuration()
  63. settings: Configuration;
  64. @Inject()
  65. injector: InjectorService;
  66. $beforeRoutesInit(): void {
  67. this.app
  68. .use(cookieParser())
  69. .use(compress({}))
  70. .use(methodOverride())
  71. .use(bodyParser.json())
  72. .use(bodyParser.urlencoded({
  73. extended: true,
  74. }));
  75. }
  76. async $onReady(): Promise<void> {
  77. const typeormService = this.injector.get<TypeORMService>(TypeORMService);
  78. console.log(typeormService);
  79. const connection = typeormService?.connectionManager.get('0');
  80. console.log(connection);
  81. }
  82. }