Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

manifest.js 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. require('dotenv').config()
  2. const Confidence = require('@hapipal/confidence')
  3. const Inert = require('@hapi/inert')
  4. const Vision = require('@hapi/vision')
  5. const Schwifty = require('@hapipal/schwifty')
  6. const HapiSwagger = require('hapi-swagger')
  7. const confs = {
  8. local: {
  9. host: process.env.DB_HOST,
  10. port: process.env.DB_PORT,
  11. dbname: process.env.DB_NAME,
  12. user: process.env.DB_USER,
  13. pw: process.env.DB_ROOT_PASSWORD,
  14. ssl: false,
  15. },
  16. prod: {
  17. host: process.env.PSCALE_DB_HOST,
  18. port: process.env.PSCALE_DB_PORT,
  19. dbname: process.env.PSCALE_DB_NAME,
  20. branch: process.env.PSCALE_DB_BRANCH,
  21. user: process.env.PSCALE_DB_USER,
  22. pw: process.env.PSCALE_DB_PASSWORD,
  23. ssl: true,
  24. },
  25. }
  26. const current = {
  27. ssl: process.env.USE_LOCAL_DB == true ? confs.local.ssl : confs.prod.ssl,
  28. host: process.env.USE_LOCAL_DB == true ? confs.local.host : confs.prod.host,
  29. port: process.env.USE_LOCAL_DB == true ? confs.local.port : confs.prod.port,
  30. dbname:
  31. process.env.USE_LOCAL_DB == true
  32. ? confs.local.dbname
  33. : confs.prod.dbname,
  34. user: process.env.USE_LOCAL_DB == true ? confs.local.user : confs.prod.user,
  35. pw: process.env.USE_LOCAL_DB == true ? confs.local.pw : confs.prod.pw,
  36. }
  37. /** Glue manifest as a confidence store */
  38. module.exports = new Confidence.Store({
  39. server: {
  40. host: process.env.API_HOST,
  41. port: {
  42. $filter: 'NODE_ENV',
  43. $default: {
  44. $param: 'API_PORT',
  45. $coerce: 'number',
  46. $default: process.env.API_PORT,
  47. },
  48. test: { $value: undefined }, // Let the server find an open port
  49. },
  50. debug: {
  51. $filter: 'NODE_ENV',
  52. $default: {
  53. log: ['error', 'start'],
  54. request: ['error'],
  55. },
  56. production: {
  57. request: ['implementation'],
  58. },
  59. },
  60. },
  61. register: {
  62. plugins: [
  63. /** Main app */
  64. {
  65. plugin: '../lib',
  66. routes: {
  67. prefix: '/api',
  68. },
  69. options: {
  70. jwtKey: {
  71. $filter: 'NODE_ENV',
  72. $default: {
  73. $param: 'APP_SECRET',
  74. $default: 'app-secret',
  75. },
  76. // Use .env file in production
  77. production: {
  78. $param: 'APP_SECRET',
  79. },
  80. },
  81. },
  82. },
  83. /** Documentaion plugins */
  84. Inert,
  85. Vision,
  86. {
  87. plugin: HapiSwagger,
  88. options: {
  89. info: { title: 'Test API Documentation' },
  90. },
  91. },
  92. /** Model and knex integration */
  93. {
  94. plugin: Schwifty,
  95. options: {
  96. $filter: 'NODE_ENV',
  97. $default: {},
  98. $base: {
  99. migrateOnStart: true,
  100. knex: {
  101. client: process.env.DB_TYPE,
  102. useNullAsDefault: true,
  103. connection: {
  104. host: current.host,
  105. user: current.user,
  106. password: current.pw,
  107. database: current.dbname,
  108. port: current.port,
  109. ssl: current.ssl,
  110. },
  111. },
  112. },
  113. production: {
  114. migrateOnStart: false,
  115. },
  116. },
  117. },
  118. ],
  119. },
  120. })