typescript-express-starter 9.2.0 → 10.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/CONTRIBUTORS.md +69 -0
  2. package/README.kr.md +122 -167
  3. package/README.md +118 -163
  4. package/bin/cli.js +1 -1
  5. package/lib/default/.swcrc +0 -3
  6. package/lib/default/Dockerfile.dev +18 -0
  7. package/lib/default/Dockerfile.prod +18 -0
  8. package/lib/default/Makefile +29 -16
  9. package/lib/default/docker-compose.yml +8 -8
  10. package/lib/default/package.json +3 -1
  11. package/lib/default/src/app.ts +4 -5
  12. package/lib/default/src/controllers/auth.controller.ts +9 -11
  13. package/lib/default/src/controllers/users.controller.ts +11 -13
  14. package/lib/default/src/dtos/users.dto.ts +12 -1
  15. package/lib/default/src/interfaces/users.interface.ts +2 -2
  16. package/lib/default/src/middlewares/auth.middleware.ts +16 -10
  17. package/lib/default/src/middlewares/error.middleware.ts +2 -4
  18. package/lib/default/src/middlewares/validation.middleware.ts +22 -20
  19. package/lib/default/src/models/users.model.ts +6 -8
  20. package/lib/default/src/routes/auth.route.ts +8 -11
  21. package/lib/default/src/routes/users.route.ts +10 -12
  22. package/lib/default/src/server.ts +6 -7
  23. package/lib/default/src/services/auth.service.ts +22 -33
  24. package/lib/default/src/services/users.service.ts +16 -25
  25. package/lib/{graphql/src/tests → default/src/test}/auth.test.ts +21 -21
  26. package/lib/default/src/test/users.test.ts +62 -0
  27. package/lib/default/src/utils/validateEnv.ts +1 -3
  28. package/lib/default/tsconfig.json +1 -1
  29. package/lib/graphql/.env.development.local +6 -6
  30. package/lib/graphql/.env.production.local +6 -6
  31. package/lib/graphql/.env.test.local +6 -6
  32. package/lib/graphql/.swcrc +1 -1
  33. package/lib/graphql/Dockerfile.dev +19 -0
  34. package/lib/graphql/Dockerfile.prod +19 -0
  35. package/lib/graphql/Makefile +32 -15
  36. package/lib/graphql/docker-compose.yml +23 -15
  37. package/lib/graphql/package.json +2 -1
  38. package/lib/graphql/src/app.ts +16 -16
  39. package/lib/graphql/src/config/index.ts +2 -2
  40. package/lib/graphql/src/database/index.ts +26 -0
  41. package/lib/graphql/src/dtos/users.dto.ts +14 -1
  42. package/lib/graphql/src/interfaces/users.interface.ts +2 -2
  43. package/lib/graphql/src/middlewares/auth.middleware.ts +16 -6
  44. package/lib/graphql/src/middlewares/error.middleware.ts +2 -4
  45. package/lib/graphql/src/repositories/auth.repository.ts +16 -24
  46. package/lib/graphql/src/repositories/users.repository.ts +5 -14
  47. package/lib/graphql/src/resolvers/auth.resolver.ts +2 -2
  48. package/lib/graphql/src/resolvers/users.resolver.ts +4 -4
  49. package/lib/graphql/src/server.ts +6 -7
  50. package/lib/graphql/src/test/auth.test.ts +10 -0
  51. package/lib/graphql/src/test/users.test.ts +11 -0
  52. package/lib/graphql/src/typedefs/users.type.ts +2 -2
  53. package/lib/graphql/src/utils/logger.ts +2 -0
  54. package/lib/graphql/src/utils/validateEnv.ts +1 -3
  55. package/lib/graphql/tsconfig.json +2 -2
  56. package/lib/knex/.env.development.local +2 -2
  57. package/lib/knex/.env.production.local +3 -3
  58. package/lib/knex/.env.test.local +3 -3
  59. package/lib/knex/.swcrc +1 -1
  60. package/lib/knex/Dockerfile.dev +19 -0
  61. package/lib/knex/Dockerfile.prod +19 -0
  62. package/lib/knex/Makefile +32 -15
  63. package/lib/knex/docker-compose.yml +19 -14
  64. package/lib/knex/knexfile.ts +7 -9
  65. package/lib/knex/package.json +2 -0
  66. package/lib/knex/src/app.ts +7 -9
  67. package/lib/knex/src/config/index.ts +2 -1
  68. package/lib/knex/src/controllers/auth.controller.ts +9 -11
  69. package/lib/knex/src/controllers/users.controller.ts +10 -12
  70. package/lib/knex/src/database/index.ts +24 -0
  71. package/lib/knex/src/database/migrations/20210713110926_initial.ts +17 -0
  72. package/lib/knex/src/dtos/users.dto.ts +12 -1
  73. package/lib/knex/src/interfaces/users.interface.ts +2 -2
  74. package/lib/knex/src/middlewares/auth.middleware.ts +17 -10
  75. package/lib/knex/src/middlewares/error.middleware.ts +2 -4
  76. package/lib/knex/src/middlewares/validation.middleware.ts +22 -20
  77. package/lib/knex/src/models/users.model.ts +2 -2
  78. package/lib/knex/src/routes/auth.route.ts +8 -10
  79. package/lib/knex/src/routes/users.route.ts +10 -12
  80. package/lib/knex/src/server.ts +6 -7
  81. package/lib/knex/src/services/auth.service.ts +24 -33
  82. package/lib/knex/src/services/users.service.ts +14 -19
  83. package/lib/knex/src/{tests → test}/auth.test.ts +2 -2
  84. package/lib/knex/src/{tests → test}/users.test.ts +2 -2
  85. package/lib/knex/src/utils/validateEnv.ts +1 -3
  86. package/lib/knex/tsconfig.json +2 -2
  87. package/lib/mikro-orm/.env.production.local +1 -1
  88. package/lib/mikro-orm/.env.test.local +1 -1
  89. package/lib/mikro-orm/.swcrc +1 -1
  90. package/lib/mikro-orm/Dockerfile.dev +19 -0
  91. package/lib/mikro-orm/Dockerfile.prod +19 -0
  92. package/lib/mikro-orm/Makefile +32 -15
  93. package/lib/mikro-orm/docker-compose.yml +20 -11
  94. package/lib/mikro-orm/package.json +2 -0
  95. package/lib/mikro-orm/src/app.ts +12 -13
  96. package/lib/mikro-orm/src/config/index.ts +2 -1
  97. package/lib/mikro-orm/src/controllers/auth.controller.ts +9 -11
  98. package/lib/mikro-orm/src/controllers/users.controller.ts +11 -13
  99. package/lib/mikro-orm/src/dtos/users.dto.ts +12 -1
  100. package/lib/mikro-orm/src/interfaces/users.interface.ts +1 -1
  101. package/lib/mikro-orm/src/middlewares/auth.middleware.ts +17 -10
  102. package/lib/mikro-orm/src/middlewares/error.middleware.ts +2 -4
  103. package/lib/mikro-orm/src/middlewares/validation.middleware.ts +22 -20
  104. package/lib/mikro-orm/src/routes/auth.route.ts +8 -10
  105. package/lib/mikro-orm/src/routes/users.route.ts +9 -11
  106. package/lib/mikro-orm/src/server.ts +6 -7
  107. package/lib/mikro-orm/src/services/auth.service.ts +19 -29
  108. package/lib/mikro-orm/src/services/users.service.ts +8 -16
  109. package/lib/mikro-orm/src/{tests → test}/auth.test.ts +3 -4
  110. package/lib/mikro-orm/src/{tests → test}/users.test.ts +4 -5
  111. package/lib/mikro-orm/src/utils/validateEnv.ts +1 -3
  112. package/lib/mikro-orm/tsconfig.json +2 -2
  113. package/lib/mongoose/.env.production.local +1 -1
  114. package/lib/mongoose/.env.test.local +1 -1
  115. package/lib/mongoose/.swcrc +1 -1
  116. package/lib/mongoose/Dockerfile.dev +19 -0
  117. package/lib/mongoose/Dockerfile.prod +19 -0
  118. package/lib/mongoose/Makefile +32 -15
  119. package/lib/mongoose/docker-compose.yml +20 -11
  120. package/lib/mongoose/package.json +2 -0
  121. package/lib/mongoose/src/app.ts +7 -13
  122. package/lib/mongoose/src/config/index.ts +2 -1
  123. package/lib/mongoose/src/controllers/auth.controller.ts +9 -11
  124. package/lib/mongoose/src/controllers/users.controller.ts +11 -13
  125. package/lib/mongoose/src/database/index.ts +18 -0
  126. package/lib/mongoose/src/dtos/users.dto.ts +12 -1
  127. package/lib/mongoose/src/interfaces/users.interface.ts +1 -1
  128. package/lib/mongoose/src/middlewares/auth.middleware.ts +16 -9
  129. package/lib/mongoose/src/middlewares/error.middleware.ts +2 -4
  130. package/lib/mongoose/src/middlewares/validation.middleware.ts +22 -20
  131. package/lib/mongoose/src/models/users.model.ts +2 -4
  132. package/lib/mongoose/src/routes/auth.route.ts +8 -10
  133. package/lib/mongoose/src/routes/users.route.ts +9 -11
  134. package/lib/mongoose/src/server.ts +6 -7
  135. package/lib/mongoose/src/services/auth.service.ts +22 -33
  136. package/lib/mongoose/src/services/users.service.ts +14 -24
  137. package/lib/{typegoose/src/tests → mongoose/src/test}/users.test.ts +7 -7
  138. package/lib/mongoose/src/utils/validateEnv.ts +1 -3
  139. package/lib/mongoose/tsconfig.json +2 -2
  140. package/lib/node-postgres/.dockerignore +18 -0
  141. package/lib/node-postgres/.editorconfig +9 -0
  142. package/lib/node-postgres/.env.development.local +13 -0
  143. package/lib/node-postgres/.env.production.local +13 -0
  144. package/lib/node-postgres/.env.test.local +13 -0
  145. package/lib/node-postgres/.eslintignore +1 -0
  146. package/lib/node-postgres/.eslintrc +18 -0
  147. package/lib/node-postgres/.huskyrc +5 -0
  148. package/lib/node-postgres/.lintstagedrc.json +5 -0
  149. package/lib/node-postgres/.prettierrc +8 -0
  150. package/lib/node-postgres/.swcrc +39 -0
  151. package/lib/node-postgres/.vscode/launch.json +35 -0
  152. package/lib/node-postgres/.vscode/settings.json +6 -0
  153. package/lib/node-postgres/Dockerfile.dev +17 -0
  154. package/lib/node-postgres/Dockerfile.prod +17 -0
  155. package/lib/node-postgres/Makefile +46 -0
  156. package/lib/node-postgres/docker-compose.yml +61 -0
  157. package/lib/node-postgres/ecosystem.config.js +57 -0
  158. package/lib/node-postgres/jest.config.js +12 -0
  159. package/lib/node-postgres/nginx.conf +40 -0
  160. package/lib/node-postgres/nodemon.json +12 -0
  161. package/lib/node-postgres/package.json +78 -0
  162. package/lib/node-postgres/src/app.ts +87 -0
  163. package/lib/node-postgres/src/config/index.ts +6 -0
  164. package/lib/node-postgres/src/controllers/auth.controller.ts +44 -0
  165. package/lib/node-postgres/src/controllers/users.controller.ts +63 -0
  166. package/lib/node-postgres/src/database/index.ts +6 -0
  167. package/lib/node-postgres/src/database/init.sql +110 -0
  168. package/lib/node-postgres/src/dtos/users.dto.ts +20 -0
  169. package/lib/node-postgres/src/exceptions/httpException.ts +10 -0
  170. package/lib/node-postgres/src/http/auth.http +27 -0
  171. package/lib/node-postgres/src/http/users.http +34 -0
  172. package/lib/node-postgres/src/interfaces/auth.interface.ts +15 -0
  173. package/lib/node-postgres/src/interfaces/routes.interface.ts +6 -0
  174. package/lib/node-postgres/src/interfaces/users.interface.ts +5 -0
  175. package/lib/node-postgres/src/middlewares/auth.middleware.ts +38 -0
  176. package/lib/node-postgres/src/middlewares/error.middleware.ts +15 -0
  177. package/lib/node-postgres/src/middlewares/validation.middleware.ts +27 -0
  178. package/lib/node-postgres/src/models/users.model.ts +9 -0
  179. package/lib/node-postgres/src/routes/auth.route.ts +21 -0
  180. package/lib/node-postgres/src/routes/users.route.ts +23 -0
  181. package/lib/node-postgres/src/server.ts +10 -0
  182. package/lib/node-postgres/src/services/auth.service.ts +52 -0
  183. package/lib/node-postgres/src/services/users.service.ts +51 -0
  184. package/lib/{default/src/tests → node-postgres/src/test}/auth.test.ts +2 -2
  185. package/lib/{default/src/tests → node-postgres/src/test}/users.test.ts +5 -5
  186. package/lib/node-postgres/src/utils/logger.ts +65 -0
  187. package/lib/node-postgres/src/utils/validateEnv.ts +8 -0
  188. package/lib/node-postgres/swagger.yaml +123 -0
  189. package/lib/node-postgres/tsconfig.json +40 -0
  190. package/lib/prisma/.env.production.local +1 -1
  191. package/lib/prisma/.env.test.local +1 -1
  192. package/lib/prisma/Dockerfile.dev +19 -0
  193. package/lib/prisma/Dockerfile.prod +19 -0
  194. package/lib/prisma/Makefile +32 -15
  195. package/lib/prisma/docker-compose.yml +15 -14
  196. package/lib/prisma/package.json +2 -0
  197. package/lib/prisma/src/app.ts +4 -5
  198. package/lib/prisma/src/controllers/auth.controller.ts +10 -12
  199. package/lib/prisma/src/controllers/users.controller.ts +12 -14
  200. package/lib/prisma/src/dtos/users.dto.ts +12 -1
  201. package/lib/prisma/src/interfaces/auth.interface.ts +1 -1
  202. package/lib/prisma/src/interfaces/users.interface.ts +5 -0
  203. package/lib/prisma/src/middlewares/auth.middleware.ts +16 -11
  204. package/lib/prisma/src/middlewares/error.middleware.ts +2 -4
  205. package/lib/prisma/src/middlewares/validation.middleware.ts +22 -20
  206. package/lib/prisma/src/routes/auth.route.ts +8 -10
  207. package/lib/prisma/src/routes/users.route.ts +9 -11
  208. package/lib/prisma/src/server.ts +6 -7
  209. package/lib/prisma/src/services/auth.service.ts +6 -12
  210. package/lib/prisma/src/services/users.service.ts +15 -23
  211. package/lib/prisma/src/utils/validateEnv.ts +1 -3
  212. package/lib/prisma/tsconfig.json +1 -1
  213. package/lib/routing-controllers/Dockerfile.dev +19 -0
  214. package/lib/routing-controllers/Dockerfile.prod +19 -0
  215. package/lib/routing-controllers/Makefile +29 -16
  216. package/lib/routing-controllers/docker-compose.yml +9 -9
  217. package/lib/routing-controllers/package.json +1 -0
  218. package/lib/routing-controllers/src/app.ts +4 -6
  219. package/lib/routing-controllers/src/controllers/auth.controller.ts +13 -12
  220. package/lib/routing-controllers/src/controllers/users.controller.ts +15 -13
  221. package/lib/routing-controllers/src/dtos/users.dto.ts +12 -1
  222. package/lib/routing-controllers/src/interfaces/users.interface.ts +1 -1
  223. package/lib/routing-controllers/src/middlewares/auth.middleware.ts +16 -10
  224. package/lib/routing-controllers/src/middlewares/error.middleware.ts +2 -5
  225. package/lib/routing-controllers/src/middlewares/validation.middleware.ts +23 -27
  226. package/lib/routing-controllers/src/models/users.model.ts +1 -3
  227. package/lib/routing-controllers/src/server.ts +5 -6
  228. package/lib/routing-controllers/src/services/auth.service.ts +21 -31
  229. package/lib/routing-controllers/src/services/users.service.ts +13 -21
  230. package/lib/routing-controllers/src/{tests → test}/auth.test.ts +1 -1
  231. package/lib/routing-controllers/src/{tests → test}/users.test.ts +10 -10
  232. package/lib/routing-controllers/src/utils/validateEnv.ts +1 -3
  233. package/lib/routing-controllers/tsconfig.json +1 -1
  234. package/lib/sequelize/.env.development.local +2 -2
  235. package/lib/sequelize/.env.production.local +3 -3
  236. package/lib/sequelize/.env.test.local +3 -3
  237. package/lib/sequelize/.sequelizerc +8 -0
  238. package/lib/sequelize/.swcrc +1 -1
  239. package/lib/sequelize/Dockerfile.dev +23 -0
  240. package/lib/sequelize/Dockerfile.prod +23 -0
  241. package/lib/sequelize/Makefile +32 -15
  242. package/lib/sequelize/docker-compose.yml +19 -14
  243. package/lib/sequelize/package.json +5 -1
  244. package/lib/sequelize/src/app.ts +7 -8
  245. package/lib/sequelize/src/config/index.ts +2 -1
  246. package/lib/sequelize/src/config/sequelize-cli.js +15 -0
  247. package/lib/sequelize/src/controllers/auth.controller.ts +7 -8
  248. package/lib/sequelize/src/controllers/users.controller.ts +9 -10
  249. package/lib/sequelize/src/{databases → database}/index.ts +1 -3
  250. package/lib/sequelize/src/dtos/users.dto.ts +12 -1
  251. package/lib/sequelize/src/interfaces/users.interface.ts +1 -1
  252. package/lib/sequelize/src/middlewares/auth.middleware.ts +16 -10
  253. package/lib/sequelize/src/middlewares/error.middleware.ts +2 -4
  254. package/lib/sequelize/src/middlewares/validation.middleware.ts +22 -20
  255. package/lib/sequelize/src/routes/auth.route.ts +8 -11
  256. package/lib/sequelize/src/routes/users.route.ts +9 -11
  257. package/lib/sequelize/src/server.ts +6 -7
  258. package/lib/sequelize/src/services/auth.service.ts +20 -31
  259. package/lib/sequelize/src/services/users.service.ts +14 -25
  260. package/lib/sequelize/src/{tests → test}/auth.test.ts +2 -2
  261. package/lib/sequelize/src/{tests → test}/users.test.ts +2 -2
  262. package/lib/sequelize/src/utils/validateEnv.ts +1 -3
  263. package/lib/sequelize/tsconfig.json +2 -2
  264. package/lib/starter.js +17 -26
  265. package/lib/typegoose/.env.production.local +1 -1
  266. package/lib/typegoose/.env.test.local +1 -1
  267. package/lib/typegoose/.swcrc +1 -1
  268. package/lib/typegoose/Dockerfile.dev +19 -0
  269. package/lib/typegoose/Dockerfile.prod +19 -0
  270. package/lib/typegoose/Makefile +32 -15
  271. package/lib/typegoose/docker-compose.yml +20 -11
  272. package/lib/typegoose/package.json +2 -0
  273. package/lib/typegoose/src/app.ts +7 -10
  274. package/lib/typegoose/src/config/index.ts +2 -1
  275. package/lib/typegoose/src/controllers/auth.controller.ts +9 -11
  276. package/lib/typegoose/src/controllers/users.controller.ts +11 -13
  277. package/lib/typegoose/src/database/index.ts +18 -0
  278. package/lib/typegoose/src/dtos/users.dto.ts +12 -1
  279. package/lib/typegoose/src/interfaces/users.interface.ts +1 -1
  280. package/lib/typegoose/src/middlewares/auth.middleware.ts +16 -10
  281. package/lib/typegoose/src/middlewares/error.middleware.ts +2 -4
  282. package/lib/typegoose/src/middlewares/validation.middleware.ts +22 -20
  283. package/lib/typegoose/src/models/users.model.ts +1 -3
  284. package/lib/typegoose/src/routes/auth.route.ts +8 -11
  285. package/lib/typegoose/src/routes/users.route.ts +9 -11
  286. package/lib/typegoose/src/server.ts +5 -6
  287. package/lib/typegoose/src/services/auth.service.ts +23 -32
  288. package/lib/typegoose/src/services/users.service.ts +12 -21
  289. package/lib/typegoose/src/{tests → test}/auth.test.ts +2 -2
  290. package/lib/{mongoose/src/tests → typegoose/src/test}/users.test.ts +7 -7
  291. package/lib/typegoose/src/utils/validateEnv.ts +1 -3
  292. package/lib/typegoose/tsconfig.json +2 -2
  293. package/lib/typeorm/.env.development.local +2 -2
  294. package/lib/typeorm/.env.production.local +3 -3
  295. package/lib/typeorm/.env.test.local +3 -3
  296. package/lib/typeorm/.swcrc +1 -1
  297. package/lib/typeorm/Dockerfile.dev +19 -0
  298. package/lib/typeorm/Dockerfile.prod +19 -0
  299. package/lib/typeorm/Makefile +32 -15
  300. package/lib/typeorm/docker-compose.yml +21 -14
  301. package/lib/typeorm/package.json +1 -0
  302. package/lib/typeorm/src/app.ts +7 -10
  303. package/lib/typeorm/src/config/index.ts +2 -1
  304. package/lib/typeorm/src/controllers/auth.controller.ts +9 -11
  305. package/lib/typeorm/src/controllers/users.controller.ts +11 -13
  306. package/lib/typeorm/src/database/index.ts +26 -0
  307. package/lib/typeorm/src/dtos/users.dto.ts +12 -1
  308. package/lib/typeorm/src/interfaces/users.interface.ts +1 -1
  309. package/lib/typeorm/src/middlewares/auth.middleware.ts +14 -7
  310. package/lib/typeorm/src/middlewares/error.middleware.ts +2 -4
  311. package/lib/typeorm/src/middlewares/validation.middleware.ts +22 -20
  312. package/lib/typeorm/src/routes/auth.route.ts +8 -11
  313. package/lib/typeorm/src/routes/users.route.ts +9 -11
  314. package/lib/typeorm/src/server.ts +6 -7
  315. package/lib/typeorm/src/services/auth.service.ts +20 -28
  316. package/lib/typeorm/src/services/users.service.ts +6 -16
  317. package/lib/typeorm/src/{tests → test}/auth.test.ts +6 -6
  318. package/lib/typeorm/src/{tests → test}/users.test.ts +6 -6
  319. package/lib/typeorm/src/utils/validateEnv.ts +1 -3
  320. package/lib/typeorm/tsconfig.json +2 -2
  321. package/package.json +2 -1
  322. package/lib/default/Dockerfile +0 -24
  323. package/lib/default/src/controllers/index.controller.ts +0 -13
  324. package/lib/default/src/routes/index.route.ts +0 -19
  325. package/lib/default/src/utils/util.ts +0 -19
  326. package/lib/graphql/Dockerfile +0 -24
  327. package/lib/graphql/src/databases/index.ts +0 -22
  328. package/lib/graphql/src/tests/index.test.ts +0 -18
  329. package/lib/graphql/src/tests/users.test.ts +0 -71
  330. package/lib/graphql/src/utils/util.ts +0 -19
  331. package/lib/knex/Dockerfile +0 -24
  332. package/lib/knex/src/controllers/index.controller.ts +0 -13
  333. package/lib/knex/src/databases/index.ts +0 -21
  334. package/lib/knex/src/databases/migrations/20210713110926_initial.ts +0 -13
  335. package/lib/knex/src/routes/index.route.ts +0 -19
  336. package/lib/knex/src/tests/index.test.ts +0 -17
  337. package/lib/knex/src/utils/util.ts +0 -19
  338. package/lib/mikro-orm/Dockerfile +0 -24
  339. package/lib/mikro-orm/src/controllers/index.controller.ts +0 -13
  340. package/lib/mikro-orm/src/routes/index.route.ts +0 -19
  341. package/lib/mikro-orm/src/tests/index.test.ts +0 -18
  342. package/lib/mikro-orm/src/utils/util.ts +0 -19
  343. package/lib/mongoose/Dockerfile +0 -24
  344. package/lib/mongoose/src/controllers/index.controller.ts +0 -13
  345. package/lib/mongoose/src/databases/index.ts +0 -9
  346. package/lib/mongoose/src/routes/index.route.ts +0 -19
  347. package/lib/mongoose/src/utils/util.ts +0 -19
  348. package/lib/prisma/Dockerfile +0 -24
  349. package/lib/prisma/src/controllers/index.controller.ts +0 -13
  350. package/lib/prisma/src/routes/index.route.ts +0 -19
  351. package/lib/prisma/src/tests/index.test.ts +0 -18
  352. package/lib/prisma/src/utils/util.ts +0 -19
  353. package/lib/routing-controllers/Dockerfile +0 -24
  354. package/lib/routing-controllers/src/controllers/index.controller.ts +0 -9
  355. package/lib/routing-controllers/src/tests/index.test.ts +0 -17
  356. package/lib/routing-controllers/src/utils/util.ts +0 -19
  357. package/lib/sequelize/Dockerfile +0 -28
  358. package/lib/sequelize/src/controllers/index.controller.ts +0 -13
  359. package/lib/sequelize/src/routes/index.route.ts +0 -19
  360. package/lib/sequelize/src/tests/index.test.ts +0 -18
  361. package/lib/sequelize/src/utils/util.ts +0 -19
  362. package/lib/typegoose/Dockerfile +0 -24
  363. package/lib/typegoose/src/controllers/index.controller.ts +0 -13
  364. package/lib/typegoose/src/databases/index.ts +0 -3
  365. package/lib/typegoose/src/routes/index.route.ts +0 -19
  366. package/lib/typegoose/src/tests/index.test.ts +0 -18
  367. package/lib/typegoose/src/utils/util.ts +0 -19
  368. package/lib/typeorm/Dockerfile +0 -24
  369. package/lib/typeorm/src/controllers/index.controller.ts +0 -13
  370. package/lib/typeorm/src/databases/index.ts +0 -22
  371. package/lib/typeorm/src/routes/index.route.ts +0 -19
  372. package/lib/typeorm/src/tests/index.test.ts +0 -18
  373. package/lib/typeorm/src/utils/util.ts +0 -19
  374. package/lib/knex/src/{databases → database}/migrations/.gitkeep +0 -0
  375. package/lib/knex/src/{databases → database}/seeds/.gitkeep +0 -0
  376. package/lib/mikro-orm/src/{databases → database}/index.ts +0 -0
  377. package/lib/mongoose/src/{tests → test}/auth.test.ts +0 -0
  378. package/lib/{default/src/tests → mongoose/src/test}/index.test.ts +0 -0
  379. package/lib/prisma/src/{tests → test}/auth.test.ts +1 -1
  380. package/lib/{mongoose/src/tests → prisma/src/test}/index.test.ts +0 -0
  381. package/lib/prisma/src/{tests → test}/users.test.ts +1 -1
  382. /package/lib/sequelize/src/{migrations → database/migrations}/.gitkeep +0 -0
  383. /package/lib/sequelize/src/{seeders → database/seeders}/.gitkeep +0 -0
  384. /package/lib/typeorm/src/{migration → database/migrations}/.gitkeep +0 -0
@@ -2,11 +2,11 @@
2
2
  PORT = 3000
3
3
 
4
4
  # DATABASE
5
- DB_HOST = localhost
6
- DB_PORT = 5432
7
- DB_USER = root
8
- DB_PASSWORD = password
9
- DB_DATABASE = dev
5
+ POSTGRES_USER = root
6
+ POSTGRES_PASSWORD = password
7
+ POSTGRES_HOST = localhost
8
+ POSTGRES_PORT = 5432
9
+ POSTGRES_DB = dev
10
10
 
11
11
  # TOKEN
12
12
  SECRET_KEY = secretKey
@@ -16,5 +16,5 @@ LOG_FORMAT = dev
16
16
  LOG_DIR = ../logs
17
17
 
18
18
  # CORS
19
- ORIGIN = true
19
+ ORIGIN = *
20
20
  CREDENTIALS = true
@@ -2,11 +2,11 @@
2
2
  PORT = 3000
3
3
 
4
4
  # DATABASE
5
- DB_HOST = localhost
6
- DB_PORT = 5432
7
- DB_USER = root
8
- DB_PASSWORD = password
9
- DB_DATABASE = prod
5
+ POSTGRES_USER = root
6
+ POSTGRES_PASSWORD = password
7
+ POSTGRES_HOST = localhost
8
+ POSTGRES_PORT = 5432
9
+ POSTGRES_DB = dev
10
10
 
11
11
  # TOKEN
12
12
  SECRET_KEY = secretKey
@@ -16,5 +16,5 @@ LOG_FORMAT = combined
16
16
  LOG_DIR = ../logs
17
17
 
18
18
  # CORS
19
- ORIGIN = false
19
+ ORIGIN = your.domain.com
20
20
  CREDENTIALS = true
@@ -2,11 +2,11 @@
2
2
  PORT = 3000
3
3
 
4
4
  # DATABASE
5
- DB_HOST = localhost
6
- DB_PORT = 5432
7
- DB_USER = root
8
- DB_PASSWORD = password
9
- DB_DATABASE = test
5
+ POSTGRES_USER = root
6
+ POSTGRES_PASSWORD = password
7
+ POSTGRES_HOST = localhost
8
+ POSTGRES_PORT = 5432
9
+ POSTGRES_DB = dev
10
10
 
11
11
  # TOKEN
12
12
  SECRET_KEY = secretKey
@@ -16,5 +16,5 @@ LOG_FORMAT = dev
16
16
  LOG_DIR = ../logs
17
17
 
18
18
  # CORS
19
- ORIGIN = true
19
+ ORIGIN = *
20
20
  CREDENTIALS = true
@@ -22,7 +22,7 @@
22
22
  "paths": {
23
23
  "@/*": ["*"],
24
24
  "@config": ["config"],
25
- "@databases": ["databases"],
25
+ "@database": ["database"],
26
26
  "@dtos/*": ["dtos/*"],
27
27
  "@entities/*": ["entities/*"],
28
28
  "@exceptions/*": ["exceptions/*"],
@@ -0,0 +1,19 @@
1
+ # NodeJS Version 16
2
+ FROM node:16.18-buster-slim
3
+
4
+ # Copy Dir
5
+ COPY . ./app
6
+
7
+ # Work to Dir
8
+ WORKDIR /app
9
+
10
+ # Install Node Package
11
+ RUN npm install --legacy-peer-deps
12
+
13
+ # Set Env
14
+ ENV NODE_ENV development
15
+
16
+ EXPOSE 3000
17
+
18
+ # Cmd script
19
+ CMD ["npm", "run", "dev"]
@@ -0,0 +1,19 @@
1
+ # NodeJS Version 16
2
+ FROM node:16.18-buster-slim
3
+
4
+ # Copy Dir
5
+ COPY . ./app
6
+
7
+ # Work to Dir
8
+ WORKDIR /app
9
+
10
+ # Install Node Package
11
+ RUN npm install --legacy-peer-deps
12
+
13
+ # Set Env
14
+ ENV NODE_ENV production
15
+
16
+ EXPOSE 3000
17
+
18
+ # Cmd script
19
+ CMD ["npm", "run", "start"]
@@ -2,28 +2,45 @@
2
2
  # ex) production-stage: make build APP_NAME=<APP_NAME>
3
3
  # ex) development-stage: make build-dev APP_NAME=<APP_NAME>
4
4
 
5
+ SHELL := /bin/bash
6
+
5
7
  APP_NAME = typescript-express
6
8
  APP_NAME := $(APP_NAME)
7
9
 
8
- .PHONY: build
9
- # Build the container image - Dvelopment
10
- build-dev:
10
+ .PHONY: help start clean db test
11
+
12
+ help:
13
+ @grep -E '^[1-9a-zA-Z_-]+:.*?## .*$$|(^#--)' $(MAKEFILE_LIST) \
14
+ | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[32m %-43s\033[0m %s\n", $$1, $$2}' \
15
+ | sed -e 's/\[32m #-- /[33m/'
16
+
17
+ #-- Docker
18
+ up: ## Up the container images
19
+ docker-compose up -d
20
+
21
+ down: ## Down the container images
22
+ docker-compose down
23
+
24
+ build: ## Build the container image - Production
11
25
  docker build -t ${APP_NAME}\
12
- --target development-build-stage\
13
- -f Dockerfile .
26
+ -f Dockerfile.prod .
14
27
 
15
- # Build the container image - Production
16
- build:
28
+ build-dev: ## Build the container image - Development
17
29
  docker build -t ${APP_NAME}\
18
- --target production-build-stage\
19
- -f Dockerfile .
30
+ -f Dockerfile.dev .
20
31
 
21
- # Clean the container image
22
- clean:
32
+ run: ## Run the container image
33
+ docker run -d -it -p 3000:3000 ${APP_NAME}
34
+
35
+ pause: ## Pause the containers
36
+ docker container rm -f ${APP_NAME}
37
+
38
+ clean: ## Clean the images
23
39
  docker rmi -f ${APP_NAME}
24
40
 
25
- # Run the container image
26
- run:
27
- docker run -d -it -p 3000:3000 ${APP_NAME}
41
+ remove: ## Remove the volumes
42
+ docker volume rm -f ${APP_NAME}
28
43
 
29
- all: build
44
+ #-- Database
45
+ db: ## Start the local database PostgreSQL
46
+ docker-compose up -d pg
@@ -1,43 +1,51 @@
1
- version: '3.7'
1
+ version: "3.9"
2
2
 
3
3
  services:
4
4
  proxy:
5
- image: nginx:alpine
6
5
  container_name: proxy
6
+ image: nginx:alpine
7
7
  ports:
8
- - '80:80'
8
+ - "80:80"
9
9
  volumes:
10
10
  - ./nginx.conf:/etc/nginx/nginx.conf
11
- restart: 'unless-stopped'
11
+ restart: "unless-stopped"
12
12
  networks:
13
13
  - backend
14
+
14
15
  server:
16
+ container_name: server
15
17
  build:
16
18
  context: ./
17
- target: development-build-stage
18
- dockerfile: Dockerfile
19
- container_name: server
19
+ dockerfile: Dockerfile.dev
20
20
  ports:
21
- - '3000:3000'
21
+ - "3000:3000"
22
+ environment:
23
+ POSTGRES_USER: root
24
+ POSTGRES_PASSWORD: password
25
+ POSTGRES_HOST: pg
26
+ POSTGRES_PORT: 5432
27
+ POSTGRES_DB: dev
22
28
  volumes:
23
29
  - ./:/app
24
30
  - /app/node_modules
25
- restart: 'unless-stopped'
31
+ restart: "unless-stopped"
26
32
  networks:
27
33
  - backend
28
34
  links:
29
35
  - pg
30
36
  depends_on:
31
37
  - pg
38
+
32
39
  pg:
33
- image: bitnami/postgresql:11-debian-9
34
40
  container_name: pg
35
- environment:
36
- POSTGRESQL_USERNAME: root
37
- POSTGRESQL_PASSWORD: password
38
- POSTGRESQL_DATABASE: test
41
+ image: postgres:14.5-alpine
39
42
  ports:
40
- - '5432:5432'
43
+ - "5432:5432"
44
+ environment:
45
+ POSTGRES_USER: root
46
+ POSTGRES_PASSWORD: password
47
+ POSTGRES_DB: dev
48
+ restart: "always"
41
49
  networks:
42
50
  - backend
43
51
 
@@ -26,13 +26,14 @@
26
26
  "dotenv": "^16.0.1",
27
27
  "envalid": "^7.3.1",
28
28
  "express": "^4.18.1",
29
- "graphql": "^16.5.0",
29
+ "graphql": "^15.8.0",
30
30
  "helmet": "^5.1.1",
31
31
  "hpp": "^0.2.3",
32
32
  "jsonwebtoken": "^8.5.1",
33
33
  "pg": "^8.7.3",
34
34
  "reflect-metadata": "^0.1.13",
35
35
  "type-graphql": "^1.1.1",
36
+ "typedi": "^0.10.0",
36
37
  "typeorm": "^0.2.45",
37
38
  "winston": "^3.8.1",
38
39
  "winston-daily-rotate-file": "^4.7.1"
@@ -8,14 +8,13 @@ import express from 'express';
8
8
  import helmet from 'helmet';
9
9
  import hpp from 'hpp';
10
10
  import { buildSchema } from 'type-graphql';
11
- import { createConnection } from 'typeorm';
12
11
  import { NODE_ENV, PORT, ORIGIN, CREDENTIALS } from '@config';
13
- import { dbConnection } from '@databases';
14
- import { authMiddleware, authChecker } from '@middlewares/auth.middleware';
15
- import errorMiddleware from '@middlewares/error.middleware';
12
+ import { dbConnection } from '@database';
13
+ import { AuthMiddleware, AuthCheckerMiddleware } from '@middlewares/auth.middleware';
14
+ import { ErrorMiddleware } from '@middlewares/error.middleware';
16
15
  import { logger, responseLogger, errorLogger } from '@utils/logger';
17
16
 
18
- class App {
17
+ export class App {
19
18
  public app: express.Application;
20
19
  public env: string;
21
20
  public port: string | number;
@@ -45,8 +44,8 @@ class App {
45
44
  return this.app;
46
45
  }
47
46
 
48
- private connectToDatabase() {
49
- createConnection(dbConnection);
47
+ private async connectToDatabase() {
48
+ await dbConnection();
50
49
  }
51
50
 
52
51
  private initializeMiddlewares() {
@@ -65,7 +64,7 @@ class App {
65
64
  private async initApolloServer(resolvers) {
66
65
  const schema = await buildSchema({
67
66
  resolvers: resolvers,
68
- authChecker: authChecker,
67
+ authChecker: AuthCheckerMiddleware,
69
68
  });
70
69
 
71
70
  const apolloServer = new ApolloServer({
@@ -77,7 +76,7 @@ class App {
77
76
  ],
78
77
  context: async ({ req }) => {
79
78
  try {
80
- const user = await authMiddleware(req);
79
+ const user = await AuthMiddleware(req);
81
80
  return { user };
82
81
  } catch (error) {
83
82
  throw new Error(error);
@@ -89,19 +88,20 @@ class App {
89
88
  return response;
90
89
  },
91
90
  formatError: error => {
92
- errorLogger(error);
93
-
94
- return error;
91
+ try {
92
+ errorLogger(error);
93
+ return error;
94
+ } catch (err) {
95
+ return new Error(err);
96
+ }
95
97
  },
96
98
  });
97
99
 
98
100
  await apolloServer.start();
99
- apolloServer.applyMiddleware({ app: this.app, cors: ORIGIN, path: '/graphql' });
101
+ apolloServer.applyMiddleware({ app: this.app, cors: false, path: '/graphql' });
100
102
  }
101
103
 
102
104
  private initializeErrorHandling() {
103
- this.app.use(errorMiddleware);
105
+ this.app.use(ErrorMiddleware);
104
106
  }
105
107
  }
106
-
107
- export default App;
@@ -2,5 +2,5 @@ import { config } from 'dotenv';
2
2
  config({ path: `.env.${process.env.NODE_ENV || 'development'}.local` });
3
3
 
4
4
  export const CREDENTIALS = process.env.CREDENTIALS === 'true';
5
- export const ORIGIN = process.env.ORIGIN === 'true';
6
- export const { NODE_ENV, PORT, DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_DATABASE, SECRET_KEY, LOG_FORMAT, LOG_DIR } = process.env;
5
+ export const { NODE_ENV, PORT, SECRET_KEY, LOG_FORMAT, LOG_DIR, ORIGIN } = process.env;
6
+ export const { POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_HOST, POSTGRES_PORT, POSTGRES_DB } = process.env;
@@ -0,0 +1,26 @@
1
+ import { join } from 'path';
2
+ import { createConnection, ConnectionOptions } from 'typeorm';
3
+ import { POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_HOST, POSTGRES_PORT, POSTGRES_DB } from '@config';
4
+
5
+ export const dbConnection = async () => {
6
+ const dbConfig: ConnectionOptions = {
7
+ type: 'postgres',
8
+ username: POSTGRES_USER,
9
+ password: POSTGRES_PASSWORD,
10
+ host: POSTGRES_HOST,
11
+ port: Number(POSTGRES_PORT),
12
+ database: POSTGRES_DB,
13
+ synchronize: true,
14
+ logging: false,
15
+ entities: [join(__dirname, '../**/*.entity{.ts,.js}')],
16
+ migrations: [join(__dirname, '../**/*.migration{.ts,.js}')],
17
+ subscribers: [join(__dirname, '../**/*.subscriber{.ts,.js}')],
18
+ cli: {
19
+ entitiesDir: 'src/entities',
20
+ migrationsDir: 'src/migration',
21
+ subscribersDir: 'src/subscriber',
22
+ },
23
+ };
24
+
25
+ await createConnection(dbConfig);
26
+ }
@@ -1,4 +1,4 @@
1
- import { IsEmail, IsString } from 'class-validator';
1
+ import { IsEmail, IsString, IsNotEmpty, MinLength, MaxLength } from 'class-validator';
2
2
  import { InputType, Field } from 'type-graphql';
3
3
  import { User } from '@typedefs/users.type';
4
4
 
@@ -10,5 +10,18 @@ export class CreateUserDto implements Partial<User> {
10
10
 
11
11
  @Field()
12
12
  @IsString()
13
+ @IsNotEmpty()
14
+ @MinLength(9)
15
+ @MaxLength(32)
16
+ password: string;
17
+ }
18
+
19
+ @InputType()
20
+ export class UpdateUserDto implements Partial<User> {
21
+ @Field()
22
+ @IsString()
23
+ @IsNotEmpty()
24
+ @MinLength(9)
25
+ @MaxLength(32)
13
26
  password: string;
14
27
  }
@@ -1,5 +1,5 @@
1
1
  export interface User {
2
- id: number;
3
- email: string;
2
+ id?: number;
3
+ email?: string;
4
4
  password: string;
5
5
  }
@@ -3,15 +3,25 @@ import { AuthChecker } from 'type-graphql';
3
3
  import { getRepository } from 'typeorm';
4
4
  import { SECRET_KEY } from '@config';
5
5
  import { UserEntity } from '@entities/users.entity';
6
- import { HttpException } from '@exceptions/HttpException';
6
+ import { HttpException } from '@exceptions/httpException';
7
7
  import { RequestWithUser, DataStoredInToken } from '@interfaces/auth.interface';
8
8
 
9
- export const authMiddleware = async req => {
9
+ const getAuthorization = req => {
10
+ const cookie = req.cookies['Authorization'];
11
+ if (cookie) return cookie;
12
+
13
+ const header = req.header('Authorization');
14
+ if (header) return header.split('Bearer ')[1];
15
+
16
+ return null;
17
+ };
18
+
19
+ export const AuthMiddleware = async req => {
10
20
  try {
11
- const Authorization = req.cookies['Authorization'] || (req.header('Authorization') ? req.header('Authorization').split('Bearer ')[1] : null);
21
+ const Authorization = getAuthorization(req);
22
+
12
23
  if (Authorization) {
13
- const secretKey: string = SECRET_KEY;
14
- const { id } = (await verify(Authorization, secretKey)) as DataStoredInToken;
24
+ const { id } = verify(Authorization, SECRET_KEY) as DataStoredInToken;
15
25
  const userRepository = getRepository(UserEntity);
16
26
  const findUser = await userRepository.findOne(id, { select: ['id', 'email', 'password'] });
17
27
  return findUser;
@@ -23,7 +33,7 @@ export const authMiddleware = async req => {
23
33
  }
24
34
  };
25
35
 
26
- export const authChecker: AuthChecker<RequestWithUser> = async ({ context: { user } }) => {
36
+ export const AuthCheckerMiddleware: AuthChecker<RequestWithUser> = async ({ context: { user } }) => {
27
37
  if (!user) {
28
38
  throw new HttpException(404, 'Authentication token missing');
29
39
  }
@@ -1,8 +1,8 @@
1
1
  import { NextFunction, Request, Response } from 'express';
2
- import { HttpException } from '@exceptions/HttpException';
2
+ import { HttpException } from '@exceptions/httpException';
3
3
  import { logger } from '@utils/logger';
4
4
 
5
- const errorMiddleware = (error: HttpException, req: Request, res: Response, next: NextFunction) => {
5
+ export const ErrorMiddleware = (error: HttpException, req: Request, res: Response, next: NextFunction) => {
6
6
  try {
7
7
  const status: number = error.status || 500;
8
8
  const message: string = error.message || 'Something went wrong';
@@ -13,5 +13,3 @@ const errorMiddleware = (error: HttpException, req: Request, res: Response, next
13
13
  next(error);
14
14
  }
15
15
  };
16
-
17
- export default errorMiddleware;
@@ -4,16 +4,24 @@ import { EntityRepository } from 'typeorm';
4
4
  import { SECRET_KEY } from '@config';
5
5
  import { CreateUserDto } from '@dtos/users.dto';
6
6
  import { UserEntity } from '@entities/users.entity';
7
- import { HttpException } from '@exceptions/HttpException';
7
+ import { HttpException } from '@exceptions/httpException';
8
8
  import { DataStoredInToken, TokenData } from '@interfaces/auth.interface';
9
9
  import { User } from '@interfaces/users.interface';
10
- import { isEmpty } from '@utils/util';
10
+
11
+ const createToken = (user: User): TokenData => {
12
+ const dataStoredInToken: DataStoredInToken = { id: user.id };
13
+ const expiresIn: number = 60 * 60;
14
+
15
+ return { expiresIn, token: sign(dataStoredInToken, SECRET_KEY, { expiresIn }) };
16
+ };
17
+
18
+ const createCookie = (tokenData: TokenData): string => {
19
+ return `Authorization=${tokenData.token}; HttpOnly; Max-Age=${tokenData.expiresIn};`;
20
+ };
11
21
 
12
22
  @EntityRepository(UserEntity)
13
- export default class AuthRepository {
23
+ export class AuthRepository {
14
24
  public async userSignUp(userData: CreateUserDto): Promise<User> {
15
- if (isEmpty(userData)) throw new HttpException(400, "userData is empty");
16
-
17
25
  const findUser: User = await UserEntity.findOne({ where: { email: userData.email } });
18
26
  if (findUser) throw new HttpException(409, `This email ${userData.email} already exists`);
19
27
 
@@ -24,38 +32,22 @@ export default class AuthRepository {
24
32
  }
25
33
 
26
34
  public async userLogIn(userData: CreateUserDto): Promise<{ cookie: string; findUser: User }> {
27
- if (isEmpty(userData)) throw new HttpException(400, "userData is empty");
28
-
29
35
  const findUser: User = await UserEntity.findOne({ where: { email: userData.email } });
30
36
  if (!findUser) throw new HttpException(409, `This email ${userData.email} was not found`);
31
37
 
32
38
  const isPasswordMatching: boolean = await compare(userData.password, findUser.password);
33
- if (!isPasswordMatching) throw new HttpException(409, "Password is not matching");
39
+ if (!isPasswordMatching) throw new HttpException(409, 'Password is not matching');
34
40
 
35
- const tokenData = this.createToken(findUser);
36
- const cookie = this.createCookie(tokenData);
41
+ const tokenData = createToken(findUser);
42
+ const cookie = createCookie(tokenData);
37
43
 
38
44
  return { cookie, findUser };
39
45
  }
40
46
 
41
47
  public async userLogOut(userId: number): Promise<User> {
42
- if (isEmpty(userId)) throw new HttpException(400, "userId is empty");
43
-
44
48
  const findUser: User = await UserEntity.findOne({ where: { id: userId } });
45
49
  if (!findUser) throw new HttpException(409, "User doesn't exist");
46
50
 
47
51
  return findUser;
48
52
  }
49
-
50
- public createToken(user: User): TokenData {
51
- const dataStoredInToken: DataStoredInToken = { id: user.id };
52
- const secretKey: string = SECRET_KEY;
53
- const expiresIn: number = 60 * 60;
54
-
55
- return { expiresIn, token: sign(dataStoredInToken, secretKey, { expiresIn }) };
56
- }
57
-
58
- public createCookie(tokenData: TokenData): string {
59
- return `Authorization=${tokenData.token}; HttpOnly; Max-Age=${tokenData.expiresIn};`;
60
- }
61
53
  }
@@ -1,13 +1,12 @@
1
1
  import { hash } from 'bcrypt';
2
2
  import { EntityRepository } from 'typeorm';
3
- import { CreateUserDto } from '@dtos/users.dto';
3
+ import { CreateUserDto, UpdateUserDto } from '@dtos/users.dto';
4
4
  import { UserEntity } from '@entities/users.entity';
5
- import { HttpException } from '@exceptions/HttpException';
5
+ import { HttpException } from '@exceptions/httpException';
6
6
  import { User } from '@interfaces/users.interface';
7
- import { isEmpty } from '@utils/util';
8
7
 
9
- @EntityRepository()
10
- export default class UserRepository {
8
+ @EntityRepository(UserEntity)
9
+ export class UserRepository {
11
10
  public async userFindAll(): Promise<User[]> {
12
11
  const users: User[] = await UserEntity.find();
13
12
 
@@ -15,8 +14,6 @@ export default class UserRepository {
15
14
  }
16
15
 
17
16
  public async userFindById(userId: number): Promise<User> {
18
- if (isEmpty(userId)) throw new HttpException(400, "UserId is empty");
19
-
20
17
  const user: User = await UserEntity.findOne({ where: { id: userId } });
21
18
  if (!user) throw new HttpException(409, "User doesn't exist");
22
19
 
@@ -24,8 +21,6 @@ export default class UserRepository {
24
21
  }
25
22
 
26
23
  public async userCreate(userData: CreateUserDto): Promise<User> {
27
- if (isEmpty(userData)) throw new HttpException(400, "userData is empty");
28
-
29
24
  const findUser: User = await UserEntity.findOne({ where: { email: userData.email } });
30
25
  if (findUser) throw new HttpException(409, `This email ${userData.email} already exists`);
31
26
 
@@ -35,9 +30,7 @@ export default class UserRepository {
35
30
  return createUserData;
36
31
  }
37
32
 
38
- public async userUpdate(userId: number, userData: CreateUserDto): Promise<User> {
39
- if (isEmpty(userData)) throw new HttpException(400, "userData is empty");
40
-
33
+ public async userUpdate(userId: number, userData: UpdateUserDto): Promise<User> {
41
34
  const findUser: User = await UserEntity.findOne({ where: { id: userId } });
42
35
  if (!findUser) throw new HttpException(409, "User doesn't exist");
43
36
 
@@ -49,8 +42,6 @@ export default class UserRepository {
49
42
  }
50
43
 
51
44
  public async userDelete(userId: number): Promise<User> {
52
- if (isEmpty(userId)) throw new HttpException(400, "User doesn't existId");
53
-
54
45
  const findUser: User = await UserEntity.findOne({ where: { id: userId } });
55
46
  if (!findUser) throw new HttpException(409, "User doesn't exist");
56
47
 
@@ -1,10 +1,10 @@
1
1
  import { Authorized, Arg, Ctx, Mutation, Resolver } from 'type-graphql';
2
2
  import { CreateUserDto } from '@dtos/users.dto';
3
- import AuthRepository from '@repositories/auth.repository';
3
+ import { AuthRepository } from '@repositories/auth.repository';
4
4
  import { User } from '@typedefs/users.type';
5
5
 
6
6
  @Resolver()
7
- export class authResolver extends AuthRepository {
7
+ export class AuthResolver extends AuthRepository {
8
8
  @Mutation(() => User, {
9
9
  description: 'User signup',
10
10
  })
@@ -1,10 +1,10 @@
1
1
  import { Arg, Mutation, Query, Resolver } from 'type-graphql';
2
- import { CreateUserDto } from '@dtos/users.dto';
3
- import UserRepository from '@repositories/users.repository';
2
+ import { CreateUserDto, UpdateUserDto } from '@dtos/users.dto';
3
+ import { UserRepository } from '@repositories/users.repository';
4
4
  import { User } from '@typedefs/users.type';
5
5
 
6
6
  @Resolver()
7
- export class userResolver extends UserRepository {
7
+ export class UserResolver extends UserRepository {
8
8
  @Query(() => [User], {
9
9
  description: 'User find list',
10
10
  })
@@ -32,7 +32,7 @@ export class userResolver extends UserRepository {
32
32
  @Mutation(() => User, {
33
33
  description: 'User update',
34
34
  })
35
- async updateUser(@Arg('userId') userId: number, @Arg('userData') userData: CreateUserDto): Promise<User> {
35
+ async updateUser(@Arg('userId') userId: number, @Arg('userData') userData: UpdateUserDto): Promise<User> {
36
36
  const user: User = await this.userUpdate(userId, userData);
37
37
  return user;
38
38
  }
@@ -1,11 +1,10 @@
1
- import App from '@/app';
2
- import validateEnv from '@utils/validateEnv';
1
+ import { App } from '@/app';
2
+ import { AuthResolver } from '@resolvers/auth.resolver';
3
+ import { UserResolver } from '@resolvers/users.resolver';
4
+ import { ValidateEnv } from '@utils/validateEnv';
3
5
 
4
- import { authResolver } from '@resolvers/auth.resolver';
5
- import { userResolver } from '@resolvers/users.resolver';
6
+ ValidateEnv();
6
7
 
7
- validateEnv();
8
-
9
- const app = new App([authResolver, userResolver]);
8
+ const app = new App([AuthResolver, UserResolver]);
10
9
 
11
10
  app.listen();
@@ -0,0 +1,10 @@
1
+ import request from 'supertest';
2
+ import { App } from '@/app';
3
+ import { CreateUserDto } from '@dtos/users.dto';
4
+
5
+ afterAll(async () => {
6
+ await new Promise<void>(resolve => setTimeout(() => resolve(), 500));
7
+ });
8
+
9
+ describe('Testing Auth', () => {
10
+ });