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.
- package/CONTRIBUTORS.md +69 -0
- package/README.kr.md +122 -167
- package/README.md +118 -163
- package/bin/cli.js +1 -1
- package/lib/default/.swcrc +0 -3
- package/lib/default/Dockerfile.dev +18 -0
- package/lib/default/Dockerfile.prod +18 -0
- package/lib/default/Makefile +29 -16
- package/lib/default/docker-compose.yml +8 -8
- package/lib/default/package.json +3 -1
- package/lib/default/src/app.ts +4 -5
- package/lib/default/src/controllers/auth.controller.ts +9 -11
- package/lib/default/src/controllers/users.controller.ts +11 -13
- package/lib/default/src/dtos/users.dto.ts +12 -1
- package/lib/default/src/interfaces/users.interface.ts +2 -2
- package/lib/default/src/middlewares/auth.middleware.ts +16 -10
- package/lib/default/src/middlewares/error.middleware.ts +2 -4
- package/lib/default/src/middlewares/validation.middleware.ts +22 -20
- package/lib/default/src/models/users.model.ts +6 -8
- package/lib/default/src/routes/auth.route.ts +8 -11
- package/lib/default/src/routes/users.route.ts +10 -12
- package/lib/default/src/server.ts +6 -7
- package/lib/default/src/services/auth.service.ts +22 -33
- package/lib/default/src/services/users.service.ts +16 -25
- package/lib/{graphql/src/tests → default/src/test}/auth.test.ts +21 -21
- package/lib/default/src/test/users.test.ts +62 -0
- package/lib/default/src/utils/validateEnv.ts +1 -3
- package/lib/default/tsconfig.json +1 -1
- package/lib/graphql/.env.development.local +6 -6
- package/lib/graphql/.env.production.local +6 -6
- package/lib/graphql/.env.test.local +6 -6
- package/lib/graphql/.swcrc +1 -1
- package/lib/graphql/Dockerfile.dev +19 -0
- package/lib/graphql/Dockerfile.prod +19 -0
- package/lib/graphql/Makefile +32 -15
- package/lib/graphql/docker-compose.yml +23 -15
- package/lib/graphql/package.json +2 -1
- package/lib/graphql/src/app.ts +16 -16
- package/lib/graphql/src/config/index.ts +2 -2
- package/lib/graphql/src/database/index.ts +26 -0
- package/lib/graphql/src/dtos/users.dto.ts +14 -1
- package/lib/graphql/src/interfaces/users.interface.ts +2 -2
- package/lib/graphql/src/middlewares/auth.middleware.ts +16 -6
- package/lib/graphql/src/middlewares/error.middleware.ts +2 -4
- package/lib/graphql/src/repositories/auth.repository.ts +16 -24
- package/lib/graphql/src/repositories/users.repository.ts +5 -14
- package/lib/graphql/src/resolvers/auth.resolver.ts +2 -2
- package/lib/graphql/src/resolvers/users.resolver.ts +4 -4
- package/lib/graphql/src/server.ts +6 -7
- package/lib/graphql/src/test/auth.test.ts +10 -0
- package/lib/graphql/src/test/users.test.ts +11 -0
- package/lib/graphql/src/typedefs/users.type.ts +2 -2
- package/lib/graphql/src/utils/logger.ts +2 -0
- package/lib/graphql/src/utils/validateEnv.ts +1 -3
- package/lib/graphql/tsconfig.json +2 -2
- package/lib/knex/.env.development.local +2 -2
- package/lib/knex/.env.production.local +3 -3
- package/lib/knex/.env.test.local +3 -3
- package/lib/knex/.swcrc +1 -1
- package/lib/knex/Dockerfile.dev +19 -0
- package/lib/knex/Dockerfile.prod +19 -0
- package/lib/knex/Makefile +32 -15
- package/lib/knex/docker-compose.yml +19 -14
- package/lib/knex/knexfile.ts +7 -9
- package/lib/knex/package.json +2 -0
- package/lib/knex/src/app.ts +7 -9
- package/lib/knex/src/config/index.ts +2 -1
- package/lib/knex/src/controllers/auth.controller.ts +9 -11
- package/lib/knex/src/controllers/users.controller.ts +10 -12
- package/lib/knex/src/database/index.ts +24 -0
- package/lib/knex/src/database/migrations/20210713110926_initial.ts +17 -0
- package/lib/knex/src/dtos/users.dto.ts +12 -1
- package/lib/knex/src/interfaces/users.interface.ts +2 -2
- package/lib/knex/src/middlewares/auth.middleware.ts +17 -10
- package/lib/knex/src/middlewares/error.middleware.ts +2 -4
- package/lib/knex/src/middlewares/validation.middleware.ts +22 -20
- package/lib/knex/src/models/users.model.ts +2 -2
- package/lib/knex/src/routes/auth.route.ts +8 -10
- package/lib/knex/src/routes/users.route.ts +10 -12
- package/lib/knex/src/server.ts +6 -7
- package/lib/knex/src/services/auth.service.ts +24 -33
- package/lib/knex/src/services/users.service.ts +14 -19
- package/lib/knex/src/{tests → test}/auth.test.ts +2 -2
- package/lib/knex/src/{tests → test}/users.test.ts +2 -2
- package/lib/knex/src/utils/validateEnv.ts +1 -3
- package/lib/knex/tsconfig.json +2 -2
- package/lib/mikro-orm/.env.production.local +1 -1
- package/lib/mikro-orm/.env.test.local +1 -1
- package/lib/mikro-orm/.swcrc +1 -1
- package/lib/mikro-orm/Dockerfile.dev +19 -0
- package/lib/mikro-orm/Dockerfile.prod +19 -0
- package/lib/mikro-orm/Makefile +32 -15
- package/lib/mikro-orm/docker-compose.yml +20 -11
- package/lib/mikro-orm/package.json +2 -0
- package/lib/mikro-orm/src/app.ts +12 -13
- package/lib/mikro-orm/src/config/index.ts +2 -1
- package/lib/mikro-orm/src/controllers/auth.controller.ts +9 -11
- package/lib/mikro-orm/src/controllers/users.controller.ts +11 -13
- package/lib/mikro-orm/src/dtos/users.dto.ts +12 -1
- package/lib/mikro-orm/src/interfaces/users.interface.ts +1 -1
- package/lib/mikro-orm/src/middlewares/auth.middleware.ts +17 -10
- package/lib/mikro-orm/src/middlewares/error.middleware.ts +2 -4
- package/lib/mikro-orm/src/middlewares/validation.middleware.ts +22 -20
- package/lib/mikro-orm/src/routes/auth.route.ts +8 -10
- package/lib/mikro-orm/src/routes/users.route.ts +9 -11
- package/lib/mikro-orm/src/server.ts +6 -7
- package/lib/mikro-orm/src/services/auth.service.ts +19 -29
- package/lib/mikro-orm/src/services/users.service.ts +8 -16
- package/lib/mikro-orm/src/{tests → test}/auth.test.ts +3 -4
- package/lib/mikro-orm/src/{tests → test}/users.test.ts +4 -5
- package/lib/mikro-orm/src/utils/validateEnv.ts +1 -3
- package/lib/mikro-orm/tsconfig.json +2 -2
- package/lib/mongoose/.env.production.local +1 -1
- package/lib/mongoose/.env.test.local +1 -1
- package/lib/mongoose/.swcrc +1 -1
- package/lib/mongoose/Dockerfile.dev +19 -0
- package/lib/mongoose/Dockerfile.prod +19 -0
- package/lib/mongoose/Makefile +32 -15
- package/lib/mongoose/docker-compose.yml +20 -11
- package/lib/mongoose/package.json +2 -0
- package/lib/mongoose/src/app.ts +7 -13
- package/lib/mongoose/src/config/index.ts +2 -1
- package/lib/mongoose/src/controllers/auth.controller.ts +9 -11
- package/lib/mongoose/src/controllers/users.controller.ts +11 -13
- package/lib/mongoose/src/database/index.ts +18 -0
- package/lib/mongoose/src/dtos/users.dto.ts +12 -1
- package/lib/mongoose/src/interfaces/users.interface.ts +1 -1
- package/lib/mongoose/src/middlewares/auth.middleware.ts +16 -9
- package/lib/mongoose/src/middlewares/error.middleware.ts +2 -4
- package/lib/mongoose/src/middlewares/validation.middleware.ts +22 -20
- package/lib/mongoose/src/models/users.model.ts +2 -4
- package/lib/mongoose/src/routes/auth.route.ts +8 -10
- package/lib/mongoose/src/routes/users.route.ts +9 -11
- package/lib/mongoose/src/server.ts +6 -7
- package/lib/mongoose/src/services/auth.service.ts +22 -33
- package/lib/mongoose/src/services/users.service.ts +14 -24
- package/lib/{typegoose/src/tests → mongoose/src/test}/users.test.ts +7 -7
- package/lib/mongoose/src/utils/validateEnv.ts +1 -3
- package/lib/mongoose/tsconfig.json +2 -2
- package/lib/node-postgres/.dockerignore +18 -0
- package/lib/node-postgres/.editorconfig +9 -0
- package/lib/node-postgres/.env.development.local +13 -0
- package/lib/node-postgres/.env.production.local +13 -0
- package/lib/node-postgres/.env.test.local +13 -0
- package/lib/node-postgres/.eslintignore +1 -0
- package/lib/node-postgres/.eslintrc +18 -0
- package/lib/node-postgres/.huskyrc +5 -0
- package/lib/node-postgres/.lintstagedrc.json +5 -0
- package/lib/node-postgres/.prettierrc +8 -0
- package/lib/node-postgres/.swcrc +39 -0
- package/lib/node-postgres/.vscode/launch.json +35 -0
- package/lib/node-postgres/.vscode/settings.json +6 -0
- package/lib/node-postgres/Dockerfile.dev +17 -0
- package/lib/node-postgres/Dockerfile.prod +17 -0
- package/lib/node-postgres/Makefile +46 -0
- package/lib/node-postgres/docker-compose.yml +61 -0
- package/lib/node-postgres/ecosystem.config.js +57 -0
- package/lib/node-postgres/jest.config.js +12 -0
- package/lib/node-postgres/nginx.conf +40 -0
- package/lib/node-postgres/nodemon.json +12 -0
- package/lib/node-postgres/package.json +78 -0
- package/lib/node-postgres/src/app.ts +87 -0
- package/lib/node-postgres/src/config/index.ts +6 -0
- package/lib/node-postgres/src/controllers/auth.controller.ts +44 -0
- package/lib/node-postgres/src/controllers/users.controller.ts +63 -0
- package/lib/node-postgres/src/database/index.ts +6 -0
- package/lib/node-postgres/src/database/init.sql +110 -0
- package/lib/node-postgres/src/dtos/users.dto.ts +20 -0
- package/lib/node-postgres/src/exceptions/httpException.ts +10 -0
- package/lib/node-postgres/src/http/auth.http +27 -0
- package/lib/node-postgres/src/http/users.http +34 -0
- package/lib/node-postgres/src/interfaces/auth.interface.ts +15 -0
- package/lib/node-postgres/src/interfaces/routes.interface.ts +6 -0
- package/lib/node-postgres/src/interfaces/users.interface.ts +5 -0
- package/lib/node-postgres/src/middlewares/auth.middleware.ts +38 -0
- package/lib/node-postgres/src/middlewares/error.middleware.ts +15 -0
- package/lib/node-postgres/src/middlewares/validation.middleware.ts +27 -0
- package/lib/node-postgres/src/models/users.model.ts +9 -0
- package/lib/node-postgres/src/routes/auth.route.ts +21 -0
- package/lib/node-postgres/src/routes/users.route.ts +23 -0
- package/lib/node-postgres/src/server.ts +10 -0
- package/lib/node-postgres/src/services/auth.service.ts +52 -0
- package/lib/node-postgres/src/services/users.service.ts +51 -0
- package/lib/{default/src/tests → node-postgres/src/test}/auth.test.ts +2 -2
- package/lib/{default/src/tests → node-postgres/src/test}/users.test.ts +5 -5
- package/lib/node-postgres/src/utils/logger.ts +65 -0
- package/lib/node-postgres/src/utils/validateEnv.ts +8 -0
- package/lib/node-postgres/swagger.yaml +123 -0
- package/lib/node-postgres/tsconfig.json +40 -0
- package/lib/prisma/.env.production.local +1 -1
- package/lib/prisma/.env.test.local +1 -1
- package/lib/prisma/Dockerfile.dev +19 -0
- package/lib/prisma/Dockerfile.prod +19 -0
- package/lib/prisma/Makefile +32 -15
- package/lib/prisma/docker-compose.yml +15 -14
- package/lib/prisma/package.json +2 -0
- package/lib/prisma/src/app.ts +4 -5
- package/lib/prisma/src/controllers/auth.controller.ts +10 -12
- package/lib/prisma/src/controllers/users.controller.ts +12 -14
- package/lib/prisma/src/dtos/users.dto.ts +12 -1
- package/lib/prisma/src/interfaces/auth.interface.ts +1 -1
- package/lib/prisma/src/interfaces/users.interface.ts +5 -0
- package/lib/prisma/src/middlewares/auth.middleware.ts +16 -11
- package/lib/prisma/src/middlewares/error.middleware.ts +2 -4
- package/lib/prisma/src/middlewares/validation.middleware.ts +22 -20
- package/lib/prisma/src/routes/auth.route.ts +8 -10
- package/lib/prisma/src/routes/users.route.ts +9 -11
- package/lib/prisma/src/server.ts +6 -7
- package/lib/prisma/src/services/auth.service.ts +6 -12
- package/lib/prisma/src/services/users.service.ts +15 -23
- package/lib/prisma/src/utils/validateEnv.ts +1 -3
- package/lib/prisma/tsconfig.json +1 -1
- package/lib/routing-controllers/Dockerfile.dev +19 -0
- package/lib/routing-controllers/Dockerfile.prod +19 -0
- package/lib/routing-controllers/Makefile +29 -16
- package/lib/routing-controllers/docker-compose.yml +9 -9
- package/lib/routing-controllers/package.json +1 -0
- package/lib/routing-controllers/src/app.ts +4 -6
- package/lib/routing-controllers/src/controllers/auth.controller.ts +13 -12
- package/lib/routing-controllers/src/controllers/users.controller.ts +15 -13
- package/lib/routing-controllers/src/dtos/users.dto.ts +12 -1
- package/lib/routing-controllers/src/interfaces/users.interface.ts +1 -1
- package/lib/routing-controllers/src/middlewares/auth.middleware.ts +16 -10
- package/lib/routing-controllers/src/middlewares/error.middleware.ts +2 -5
- package/lib/routing-controllers/src/middlewares/validation.middleware.ts +23 -27
- package/lib/routing-controllers/src/models/users.model.ts +1 -3
- package/lib/routing-controllers/src/server.ts +5 -6
- package/lib/routing-controllers/src/services/auth.service.ts +21 -31
- package/lib/routing-controllers/src/services/users.service.ts +13 -21
- package/lib/routing-controllers/src/{tests → test}/auth.test.ts +1 -1
- package/lib/routing-controllers/src/{tests → test}/users.test.ts +10 -10
- package/lib/routing-controllers/src/utils/validateEnv.ts +1 -3
- package/lib/routing-controllers/tsconfig.json +1 -1
- package/lib/sequelize/.env.development.local +2 -2
- package/lib/sequelize/.env.production.local +3 -3
- package/lib/sequelize/.env.test.local +3 -3
- package/lib/sequelize/.sequelizerc +8 -0
- package/lib/sequelize/.swcrc +1 -1
- package/lib/sequelize/Dockerfile.dev +23 -0
- package/lib/sequelize/Dockerfile.prod +23 -0
- package/lib/sequelize/Makefile +32 -15
- package/lib/sequelize/docker-compose.yml +19 -14
- package/lib/sequelize/package.json +5 -1
- package/lib/sequelize/src/app.ts +7 -8
- package/lib/sequelize/src/config/index.ts +2 -1
- package/lib/sequelize/src/config/sequelize-cli.js +15 -0
- package/lib/sequelize/src/controllers/auth.controller.ts +7 -8
- package/lib/sequelize/src/controllers/users.controller.ts +9 -10
- package/lib/sequelize/src/{databases → database}/index.ts +1 -3
- package/lib/sequelize/src/dtos/users.dto.ts +12 -1
- package/lib/sequelize/src/interfaces/users.interface.ts +1 -1
- package/lib/sequelize/src/middlewares/auth.middleware.ts +16 -10
- package/lib/sequelize/src/middlewares/error.middleware.ts +2 -4
- package/lib/sequelize/src/middlewares/validation.middleware.ts +22 -20
- package/lib/sequelize/src/routes/auth.route.ts +8 -11
- package/lib/sequelize/src/routes/users.route.ts +9 -11
- package/lib/sequelize/src/server.ts +6 -7
- package/lib/sequelize/src/services/auth.service.ts +20 -31
- package/lib/sequelize/src/services/users.service.ts +14 -25
- package/lib/sequelize/src/{tests → test}/auth.test.ts +2 -2
- package/lib/sequelize/src/{tests → test}/users.test.ts +2 -2
- package/lib/sequelize/src/utils/validateEnv.ts +1 -3
- package/lib/sequelize/tsconfig.json +2 -2
- package/lib/starter.js +17 -26
- package/lib/typegoose/.env.production.local +1 -1
- package/lib/typegoose/.env.test.local +1 -1
- package/lib/typegoose/.swcrc +1 -1
- package/lib/typegoose/Dockerfile.dev +19 -0
- package/lib/typegoose/Dockerfile.prod +19 -0
- package/lib/typegoose/Makefile +32 -15
- package/lib/typegoose/docker-compose.yml +20 -11
- package/lib/typegoose/package.json +2 -0
- package/lib/typegoose/src/app.ts +7 -10
- package/lib/typegoose/src/config/index.ts +2 -1
- package/lib/typegoose/src/controllers/auth.controller.ts +9 -11
- package/lib/typegoose/src/controllers/users.controller.ts +11 -13
- package/lib/typegoose/src/database/index.ts +18 -0
- package/lib/typegoose/src/dtos/users.dto.ts +12 -1
- package/lib/typegoose/src/interfaces/users.interface.ts +1 -1
- package/lib/typegoose/src/middlewares/auth.middleware.ts +16 -10
- package/lib/typegoose/src/middlewares/error.middleware.ts +2 -4
- package/lib/typegoose/src/middlewares/validation.middleware.ts +22 -20
- package/lib/typegoose/src/models/users.model.ts +1 -3
- package/lib/typegoose/src/routes/auth.route.ts +8 -11
- package/lib/typegoose/src/routes/users.route.ts +9 -11
- package/lib/typegoose/src/server.ts +5 -6
- package/lib/typegoose/src/services/auth.service.ts +23 -32
- package/lib/typegoose/src/services/users.service.ts +12 -21
- package/lib/typegoose/src/{tests → test}/auth.test.ts +2 -2
- package/lib/{mongoose/src/tests → typegoose/src/test}/users.test.ts +7 -7
- package/lib/typegoose/src/utils/validateEnv.ts +1 -3
- package/lib/typegoose/tsconfig.json +2 -2
- package/lib/typeorm/.env.development.local +2 -2
- package/lib/typeorm/.env.production.local +3 -3
- package/lib/typeorm/.env.test.local +3 -3
- package/lib/typeorm/.swcrc +1 -1
- package/lib/typeorm/Dockerfile.dev +19 -0
- package/lib/typeorm/Dockerfile.prod +19 -0
- package/lib/typeorm/Makefile +32 -15
- package/lib/typeorm/docker-compose.yml +21 -14
- package/lib/typeorm/package.json +1 -0
- package/lib/typeorm/src/app.ts +7 -10
- package/lib/typeorm/src/config/index.ts +2 -1
- package/lib/typeorm/src/controllers/auth.controller.ts +9 -11
- package/lib/typeorm/src/controllers/users.controller.ts +11 -13
- package/lib/typeorm/src/database/index.ts +26 -0
- package/lib/typeorm/src/dtos/users.dto.ts +12 -1
- package/lib/typeorm/src/interfaces/users.interface.ts +1 -1
- package/lib/typeorm/src/middlewares/auth.middleware.ts +14 -7
- package/lib/typeorm/src/middlewares/error.middleware.ts +2 -4
- package/lib/typeorm/src/middlewares/validation.middleware.ts +22 -20
- package/lib/typeorm/src/routes/auth.route.ts +8 -11
- package/lib/typeorm/src/routes/users.route.ts +9 -11
- package/lib/typeorm/src/server.ts +6 -7
- package/lib/typeorm/src/services/auth.service.ts +20 -28
- package/lib/typeorm/src/services/users.service.ts +6 -16
- package/lib/typeorm/src/{tests → test}/auth.test.ts +6 -6
- package/lib/typeorm/src/{tests → test}/users.test.ts +6 -6
- package/lib/typeorm/src/utils/validateEnv.ts +1 -3
- package/lib/typeorm/tsconfig.json +2 -2
- package/package.json +2 -1
- package/lib/default/Dockerfile +0 -24
- package/lib/default/src/controllers/index.controller.ts +0 -13
- package/lib/default/src/routes/index.route.ts +0 -19
- package/lib/default/src/utils/util.ts +0 -19
- package/lib/graphql/Dockerfile +0 -24
- package/lib/graphql/src/databases/index.ts +0 -22
- package/lib/graphql/src/tests/index.test.ts +0 -18
- package/lib/graphql/src/tests/users.test.ts +0 -71
- package/lib/graphql/src/utils/util.ts +0 -19
- package/lib/knex/Dockerfile +0 -24
- package/lib/knex/src/controllers/index.controller.ts +0 -13
- package/lib/knex/src/databases/index.ts +0 -21
- package/lib/knex/src/databases/migrations/20210713110926_initial.ts +0 -13
- package/lib/knex/src/routes/index.route.ts +0 -19
- package/lib/knex/src/tests/index.test.ts +0 -17
- package/lib/knex/src/utils/util.ts +0 -19
- package/lib/mikro-orm/Dockerfile +0 -24
- package/lib/mikro-orm/src/controllers/index.controller.ts +0 -13
- package/lib/mikro-orm/src/routes/index.route.ts +0 -19
- package/lib/mikro-orm/src/tests/index.test.ts +0 -18
- package/lib/mikro-orm/src/utils/util.ts +0 -19
- package/lib/mongoose/Dockerfile +0 -24
- package/lib/mongoose/src/controllers/index.controller.ts +0 -13
- package/lib/mongoose/src/databases/index.ts +0 -9
- package/lib/mongoose/src/routes/index.route.ts +0 -19
- package/lib/mongoose/src/utils/util.ts +0 -19
- package/lib/prisma/Dockerfile +0 -24
- package/lib/prisma/src/controllers/index.controller.ts +0 -13
- package/lib/prisma/src/routes/index.route.ts +0 -19
- package/lib/prisma/src/tests/index.test.ts +0 -18
- package/lib/prisma/src/utils/util.ts +0 -19
- package/lib/routing-controllers/Dockerfile +0 -24
- package/lib/routing-controllers/src/controllers/index.controller.ts +0 -9
- package/lib/routing-controllers/src/tests/index.test.ts +0 -17
- package/lib/routing-controllers/src/utils/util.ts +0 -19
- package/lib/sequelize/Dockerfile +0 -28
- package/lib/sequelize/src/controllers/index.controller.ts +0 -13
- package/lib/sequelize/src/routes/index.route.ts +0 -19
- package/lib/sequelize/src/tests/index.test.ts +0 -18
- package/lib/sequelize/src/utils/util.ts +0 -19
- package/lib/typegoose/Dockerfile +0 -24
- package/lib/typegoose/src/controllers/index.controller.ts +0 -13
- package/lib/typegoose/src/databases/index.ts +0 -3
- package/lib/typegoose/src/routes/index.route.ts +0 -19
- package/lib/typegoose/src/tests/index.test.ts +0 -18
- package/lib/typegoose/src/utils/util.ts +0 -19
- package/lib/typeorm/Dockerfile +0 -24
- package/lib/typeorm/src/controllers/index.controller.ts +0 -13
- package/lib/typeorm/src/databases/index.ts +0 -22
- package/lib/typeorm/src/routes/index.route.ts +0 -19
- package/lib/typeorm/src/tests/index.test.ts +0 -18
- package/lib/typeorm/src/utils/util.ts +0 -19
- package/lib/knex/src/{databases → database}/migrations/.gitkeep +0 -0
- package/lib/knex/src/{databases → database}/seeds/.gitkeep +0 -0
- package/lib/mikro-orm/src/{databases → database}/index.ts +0 -0
- package/lib/mongoose/src/{tests → test}/auth.test.ts +0 -0
- package/lib/{default/src/tests → mongoose/src/test}/index.test.ts +0 -0
- package/lib/prisma/src/{tests → test}/auth.test.ts +1 -1
- package/lib/{mongoose/src/tests → prisma/src/test}/index.test.ts +0 -0
- package/lib/prisma/src/{tests → test}/users.test.ts +1 -1
- /package/lib/sequelize/src/{migrations → database/migrations}/.gitkeep +0 -0
- /package/lib/sequelize/src/{seeders → database/seeders}/.gitkeep +0 -0
- /package/lib/typeorm/src/{migration → database/migrations}/.gitkeep +0 -0
|
@@ -1,19 +1,29 @@
|
|
|
1
1
|
import { compare, hash } from 'bcrypt';
|
|
2
2
|
import { sign } from 'jsonwebtoken';
|
|
3
|
+
import { Service } from 'typedi';
|
|
3
4
|
import { EntityRepository, Repository } from 'typeorm';
|
|
4
5
|
import { SECRET_KEY } from '@config';
|
|
5
|
-
import { CreateUserDto } from '@dtos/users.dto';
|
|
6
6
|
import { UserEntity } from '@entities/users.entity';
|
|
7
|
-
import { HttpException } from '
|
|
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';
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
const createToken = (user: User): TokenData => {
|
|
12
|
+
const dataStoredInToken: DataStoredInToken = { id: user.id };
|
|
13
|
+
const secretKey: string = SECRET_KEY;
|
|
14
|
+
const expiresIn: number = 60 * 60;
|
|
15
|
+
|
|
16
|
+
return { expiresIn, token: sign(dataStoredInToken, secretKey, { expiresIn }) };
|
|
17
|
+
}
|
|
16
18
|
|
|
19
|
+
const createCookie = (tokenData: TokenData): string => {
|
|
20
|
+
return `Authorization=${tokenData.token}; HttpOnly; Max-Age=${tokenData.expiresIn};`;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@Service()
|
|
24
|
+
@EntityRepository()
|
|
25
|
+
export class AuthService extends Repository<UserEntity> {
|
|
26
|
+
public async signup(userData: User): Promise<User> {
|
|
17
27
|
const findUser: User = await UserEntity.findOne({ where: { email: userData.email } });
|
|
18
28
|
if (findUser) throw new HttpException(409, `This email ${userData.email} already exists`);
|
|
19
29
|
|
|
@@ -22,41 +32,23 @@ class AuthService extends Repository<UserEntity> {
|
|
|
22
32
|
return createUserData;
|
|
23
33
|
}
|
|
24
34
|
|
|
25
|
-
public async login(userData:
|
|
26
|
-
if (isEmpty(userData)) throw new HttpException(400, "userData is empty");
|
|
27
|
-
|
|
35
|
+
public async login(userData: User): Promise<{ cookie: string; findUser: User }> {
|
|
28
36
|
const findUser: User = await UserEntity.findOne({ where: { email: userData.email } });
|
|
29
37
|
if (!findUser) throw new HttpException(409, `This email ${userData.email} was not found`);
|
|
30
38
|
|
|
31
39
|
const isPasswordMatching: boolean = await compare(userData.password, findUser.password);
|
|
32
40
|
if (!isPasswordMatching) throw new HttpException(409, "Password not matching");
|
|
33
41
|
|
|
34
|
-
const tokenData =
|
|
35
|
-
const cookie =
|
|
42
|
+
const tokenData = createToken(findUser);
|
|
43
|
+
const cookie = createCookie(tokenData);
|
|
36
44
|
|
|
37
45
|
return { cookie, findUser };
|
|
38
46
|
}
|
|
39
47
|
|
|
40
48
|
public async logout(userData: User): Promise<User> {
|
|
41
|
-
if (isEmpty(userData)) throw new HttpException(400, "userData is empty");
|
|
42
|
-
|
|
43
49
|
const findUser: User = await UserEntity.findOne({ where: { email: userData.email, password: userData.password } });
|
|
44
50
|
if (!findUser) throw new HttpException(409, "User doesn't exist");
|
|
45
51
|
|
|
46
52
|
return findUser;
|
|
47
53
|
}
|
|
48
|
-
|
|
49
|
-
public createToken(user: User): TokenData {
|
|
50
|
-
const dataStoredInToken: DataStoredInToken = { id: user.id };
|
|
51
|
-
const secretKey: string = SECRET_KEY;
|
|
52
|
-
const expiresIn: number = 60 * 60;
|
|
53
|
-
|
|
54
|
-
return { expiresIn, token: sign(dataStoredInToken, secretKey, { expiresIn }) };
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
public createCookie(tokenData: TokenData): string {
|
|
58
|
-
return `Authorization=${tokenData.token}; HttpOnly; Max-Age=${tokenData.expiresIn};`;
|
|
59
|
-
}
|
|
60
54
|
}
|
|
61
|
-
|
|
62
|
-
export default AuthService;
|
|
@@ -1,30 +1,26 @@
|
|
|
1
1
|
import { hash } from 'bcrypt';
|
|
2
2
|
import { EntityRepository, Repository } from 'typeorm';
|
|
3
|
-
import {
|
|
3
|
+
import { Service } from 'typedi';
|
|
4
4
|
import { UserEntity } from '@entities/users.entity';
|
|
5
|
-
import { HttpException } from '
|
|
5
|
+
import { HttpException } from '@/exceptions/httpException';
|
|
6
6
|
import { User } from '@interfaces/users.interface';
|
|
7
|
-
import { isEmpty } from '@utils/util';
|
|
8
7
|
|
|
8
|
+
@Service()
|
|
9
9
|
@EntityRepository()
|
|
10
|
-
class UserService extends Repository<UserEntity> {
|
|
10
|
+
export class UserService extends Repository<UserEntity> {
|
|
11
11
|
public async findAllUser(): Promise<User[]> {
|
|
12
12
|
const users: User[] = await UserEntity.find();
|
|
13
13
|
return users;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
public async findUserById(userId: number): Promise<User> {
|
|
17
|
-
if (isEmpty(userId)) throw new HttpException(400, "UserId is empty");
|
|
18
|
-
|
|
19
17
|
const findUser: User = await UserEntity.findOne({ where: { id: userId } });
|
|
20
18
|
if (!findUser) throw new HttpException(409, "User doesn't exist");
|
|
21
19
|
|
|
22
20
|
return findUser;
|
|
23
21
|
}
|
|
24
22
|
|
|
25
|
-
public async createUser(userData:
|
|
26
|
-
if (isEmpty(userData)) throw new HttpException(400, "userData is empty");
|
|
27
|
-
|
|
23
|
+
public async createUser(userData: User): Promise<User> {
|
|
28
24
|
const findUser: User = await UserEntity.findOne({ where: { email: userData.email } });
|
|
29
25
|
if (findUser) throw new HttpException(409, `This email ${userData.email} already exists`);
|
|
30
26
|
|
|
@@ -34,9 +30,7 @@ class UserService extends Repository<UserEntity> {
|
|
|
34
30
|
return createUserData;
|
|
35
31
|
}
|
|
36
32
|
|
|
37
|
-
public async updateUser(userId: number, userData:
|
|
38
|
-
if (isEmpty(userData)) throw new HttpException(400, "userData is empty");
|
|
39
|
-
|
|
33
|
+
public async updateUser(userId: number, userData: User): Promise<User> {
|
|
40
34
|
const findUser: User = await UserEntity.findOne({ where: { id: userId } });
|
|
41
35
|
if (!findUser) throw new HttpException(409, "User doesn't exist");
|
|
42
36
|
|
|
@@ -48,8 +42,6 @@ class UserService extends Repository<UserEntity> {
|
|
|
48
42
|
}
|
|
49
43
|
|
|
50
44
|
public async deleteUser(userId: number): Promise<User> {
|
|
51
|
-
if (isEmpty(userId)) throw new HttpException(400, "UserId is empty");
|
|
52
|
-
|
|
53
45
|
const findUser: User = await UserEntity.findOne({ where: { id: userId } });
|
|
54
46
|
if (!findUser) throw new HttpException(409, "User doesn't exist");
|
|
55
47
|
|
|
@@ -57,5 +49,3 @@ class UserService extends Repository<UserEntity> {
|
|
|
57
49
|
return findUser;
|
|
58
50
|
}
|
|
59
51
|
}
|
|
60
|
-
|
|
61
|
-
export default UserService;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import bcrypt from 'bcrypt';
|
|
2
2
|
import request from 'supertest';
|
|
3
3
|
import { createConnection, getConnection, Repository } from 'typeorm';
|
|
4
|
-
import App from '@/app';
|
|
5
|
-
import { dbConnection } from '@
|
|
4
|
+
import { App } from '@/app';
|
|
5
|
+
import { dbConnection } from '@database';
|
|
6
6
|
import { CreateUserDto } from '@dtos/users.dto';
|
|
7
7
|
import { UserEntity } from '@entities/users.entity';
|
|
8
|
-
import AuthRoute from '@routes/auth.route';
|
|
8
|
+
import { AuthRoute } from '@routes/auth.route';
|
|
9
9
|
|
|
10
|
-
beforeAll(async () => {
|
|
11
|
-
|
|
12
|
-
});
|
|
10
|
+
// beforeAll(async () => {
|
|
11
|
+
// await createConnection(dbConnection);
|
|
12
|
+
// });
|
|
13
13
|
|
|
14
14
|
afterAll(async () => {
|
|
15
15
|
await getConnection().close();
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import bcrypt from 'bcrypt';
|
|
2
2
|
import request from 'supertest';
|
|
3
3
|
import { createConnection, getConnection, Repository } from 'typeorm';
|
|
4
|
-
import App from '@/app';
|
|
5
|
-
import { dbConnection } from '@
|
|
4
|
+
import { App } from '@/app';
|
|
5
|
+
import { dbConnection } from '@database';
|
|
6
6
|
import { CreateUserDto } from '@dtos/users.dto';
|
|
7
7
|
import { UserEntity } from '@entities/users.entity';
|
|
8
|
-
import UserRoute from '@routes/users.route';
|
|
8
|
+
import { UserRoute } from '@routes/users.route';
|
|
9
9
|
|
|
10
|
-
beforeAll(async () => {
|
|
11
|
-
|
|
12
|
-
});
|
|
10
|
+
// beforeAll(async () => {
|
|
11
|
+
// await createConnection(dbConnection);
|
|
12
|
+
// });
|
|
13
13
|
|
|
14
14
|
afterAll(async () => {
|
|
15
15
|
await getConnection().close();
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@/*": ["*"],
|
|
25
25
|
"@config": ["config"],
|
|
26
26
|
"@controllers/*": ["controllers/*"],
|
|
27
|
-
"@
|
|
27
|
+
"@database": ["database"],
|
|
28
28
|
"@dtos/*": ["dtos/*"],
|
|
29
29
|
"@entities/*": ["entities/*"],
|
|
30
30
|
"@exceptions/*": ["exceptions/*"],
|
|
@@ -36,5 +36,5 @@
|
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
"include": ["src/**/*.ts", "src/**/*.json", ".env"],
|
|
39
|
-
"exclude": ["node_modules", "src/http", "src/logs"
|
|
39
|
+
"exclude": ["node_modules", "src/http", "src/logs"]
|
|
40
40
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typescript-express-starter",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.0.1",
|
|
4
4
|
"description": "Quick and Easy TypeScript Express Starter",
|
|
5
5
|
"author": "AGUMON <ljlm0402@gmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"typegoose",
|
|
17
17
|
"mikro-orm",
|
|
18
18
|
"routing-controllers",
|
|
19
|
+
"node-postgres",
|
|
19
20
|
"logger",
|
|
20
21
|
"swagger",
|
|
21
22
|
"jest",
|
package/lib/default/Dockerfile
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# Common build stage
|
|
2
|
-
FROM node:14.14.0-alpine3.12 as common-build-stage
|
|
3
|
-
|
|
4
|
-
COPY . ./app
|
|
5
|
-
|
|
6
|
-
WORKDIR /app
|
|
7
|
-
|
|
8
|
-
RUN npm install
|
|
9
|
-
|
|
10
|
-
EXPOSE 3000
|
|
11
|
-
|
|
12
|
-
# Development build stage
|
|
13
|
-
FROM common-build-stage as development-build-stage
|
|
14
|
-
|
|
15
|
-
ENV NODE_ENV development
|
|
16
|
-
|
|
17
|
-
CMD ["npm", "run", "dev"]
|
|
18
|
-
|
|
19
|
-
# Production build stage
|
|
20
|
-
FROM common-build-stage as production-build-stage
|
|
21
|
-
|
|
22
|
-
ENV NODE_ENV production
|
|
23
|
-
|
|
24
|
-
CMD ["npm", "run", "start"]
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { NextFunction, Request, Response } from 'express';
|
|
2
|
-
|
|
3
|
-
class IndexController {
|
|
4
|
-
public index = (req: Request, res: Response, next: NextFunction): void => {
|
|
5
|
-
try {
|
|
6
|
-
res.sendStatus(200);
|
|
7
|
-
} catch (error) {
|
|
8
|
-
next(error);
|
|
9
|
-
}
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export default IndexController;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Router } from 'express';
|
|
2
|
-
import IndexController from '@controllers/index.controller';
|
|
3
|
-
import { Routes } from '@interfaces/routes.interface';
|
|
4
|
-
|
|
5
|
-
class IndexRoute implements Routes {
|
|
6
|
-
public path = '/';
|
|
7
|
-
public router = Router();
|
|
8
|
-
public indexController = new IndexController();
|
|
9
|
-
|
|
10
|
-
constructor() {
|
|
11
|
-
this.initializeRoutes();
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
private initializeRoutes() {
|
|
15
|
-
this.router.get(`${this.path}`, this.indexController.index);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export default IndexRoute;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @method isEmpty
|
|
3
|
-
* @param {String | Number | Object} value
|
|
4
|
-
* @returns {Boolean} true & false
|
|
5
|
-
* @description this value is Empty Check
|
|
6
|
-
*/
|
|
7
|
-
export const isEmpty = (value: string | number | object): boolean => {
|
|
8
|
-
if (value === null) {
|
|
9
|
-
return true;
|
|
10
|
-
} else if (typeof value !== 'number' && value === '') {
|
|
11
|
-
return true;
|
|
12
|
-
} else if (typeof value === 'undefined' || value === undefined) {
|
|
13
|
-
return true;
|
|
14
|
-
} else if (value !== null && typeof value === 'object' && !Object.keys(value).length) {
|
|
15
|
-
return true;
|
|
16
|
-
} else {
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
};
|
package/lib/graphql/Dockerfile
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# Common build stage
|
|
2
|
-
FROM node:14.14.0-alpine3.12 as common-build-stage
|
|
3
|
-
|
|
4
|
-
COPY . ./app
|
|
5
|
-
|
|
6
|
-
WORKDIR /app
|
|
7
|
-
|
|
8
|
-
RUN npm install
|
|
9
|
-
|
|
10
|
-
EXPOSE 3000
|
|
11
|
-
|
|
12
|
-
# Development build stage
|
|
13
|
-
FROM common-build-stage as development-build-stage
|
|
14
|
-
|
|
15
|
-
ENV NODE_ENV development
|
|
16
|
-
|
|
17
|
-
CMD ["npm", "run", "dev"]
|
|
18
|
-
|
|
19
|
-
# Production build stage
|
|
20
|
-
FROM common-build-stage as production-build-stage
|
|
21
|
-
|
|
22
|
-
ENV NODE_ENV production
|
|
23
|
-
|
|
24
|
-
CMD ["npm", "run", "start"]
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { join } from 'path';
|
|
2
|
-
import { ConnectionOptions } from 'typeorm';
|
|
3
|
-
import { DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_DATABASE } from '@config';
|
|
4
|
-
|
|
5
|
-
export const dbConnection: ConnectionOptions = {
|
|
6
|
-
type: 'postgres',
|
|
7
|
-
host: DB_HOST,
|
|
8
|
-
port: DB_PORT,
|
|
9
|
-
username: DB_USER,
|
|
10
|
-
password: DB_PASSWORD,
|
|
11
|
-
database: DB_DATABASE,
|
|
12
|
-
synchronize: true,
|
|
13
|
-
logging: false,
|
|
14
|
-
entities: [join(__dirname, '../**/*.entity{.ts,.js}')],
|
|
15
|
-
migrations: [join(__dirname, '../**/*.migration{.ts,.js}')],
|
|
16
|
-
subscribers: [join(__dirname, '../**/*.subscriber{.ts,.js}')],
|
|
17
|
-
cli: {
|
|
18
|
-
entitiesDir: 'src/entities',
|
|
19
|
-
migrationsDir: 'src/migration',
|
|
20
|
-
subscribersDir: 'src/subscriber',
|
|
21
|
-
},
|
|
22
|
-
};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import request from 'supertest';
|
|
2
|
-
import App from '@app';
|
|
3
|
-
import IndexRoute from '@routes/index.route';
|
|
4
|
-
|
|
5
|
-
afterAll(async () => {
|
|
6
|
-
await new Promise<void>(resolve => setTimeout(() => resolve(), 500));
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
describe('Testing Index', () => {
|
|
10
|
-
describe('[GET] /', () => {
|
|
11
|
-
it('response statusCode 200', () => {
|
|
12
|
-
const indexRoute = new IndexRoute();
|
|
13
|
-
const app = new App([indexRoute]);
|
|
14
|
-
|
|
15
|
-
return request(app.getServer()).get(`${indexRoute.path}`).expect(200);
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
});
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import request from 'supertest';
|
|
2
|
-
import App from '@app';
|
|
3
|
-
import { CreateUserDto } from '@dtos/users.dto';
|
|
4
|
-
import { User } from '@interfaces/users.interface';
|
|
5
|
-
import userModel from '@models/users.model';
|
|
6
|
-
import UserRoute from '@routes/users.route';
|
|
7
|
-
|
|
8
|
-
afterAll(async () => {
|
|
9
|
-
await new Promise<void>(resolve => setTimeout(() => resolve(), 500));
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
describe('Testing Users', () => {
|
|
13
|
-
describe('[GET] /users', () => {
|
|
14
|
-
it('response statusCode 200 / findAll', () => {
|
|
15
|
-
const findUser: User[] = userModel;
|
|
16
|
-
const usersRoute = new UserRoute();
|
|
17
|
-
const app = new App([usersRoute]);
|
|
18
|
-
|
|
19
|
-
return request(app.getServer()).get(`${usersRoute.path}`).expect(200, { data: findUser, message: 'findAll' });
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
describe('[GET] /users/:id', () => {
|
|
24
|
-
it('response statusCode 200 / findOne', () => {
|
|
25
|
-
const userId = 1;
|
|
26
|
-
const findUser: User = userModel.find(user => user.id === userId);
|
|
27
|
-
const usersRoute = new UserRoute();
|
|
28
|
-
const app = new App([usersRoute]);
|
|
29
|
-
|
|
30
|
-
return request(app.getServer()).get(`${usersRoute.path}/${userId}`).expect(200, { data: findUser, message: 'findOne' });
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
describe('[POST] /users', () => {
|
|
35
|
-
it('response statusCode 201 / created', async () => {
|
|
36
|
-
const userData: CreateUserDto = {
|
|
37
|
-
email: 'test@email.com',
|
|
38
|
-
password: 'q1w2e3r4',
|
|
39
|
-
};
|
|
40
|
-
const usersRoute = new UserRoute();
|
|
41
|
-
const app = new App([usersRoute]);
|
|
42
|
-
|
|
43
|
-
return request(app.getServer()).post(`${usersRoute.path}`).send(userData).expect(201);
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
describe('[PUT] /users/:id', () => {
|
|
48
|
-
it('response statusCode 200 / updated', async () => {
|
|
49
|
-
const userId = 1;
|
|
50
|
-
const userData: CreateUserDto = {
|
|
51
|
-
email: 'test@email.com',
|
|
52
|
-
password: 'q1w2e3r4',
|
|
53
|
-
};
|
|
54
|
-
const usersRoute = new UserRoute();
|
|
55
|
-
const app = new App([usersRoute]);
|
|
56
|
-
|
|
57
|
-
return request(app.getServer()).put(`${usersRoute.path}/${userId}`).send(userData).expect(200);
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
describe('[DELETE] /users/:id', () => {
|
|
62
|
-
it('response statusCode 200 / deleted', () => {
|
|
63
|
-
const userId = 1;
|
|
64
|
-
const deleteUser: User[] = userModel.filter(user => user.id !== userId);
|
|
65
|
-
const usersRoute = new UserRoute();
|
|
66
|
-
const app = new App([usersRoute]);
|
|
67
|
-
|
|
68
|
-
return request(app.getServer()).delete(`${usersRoute.path}/${userId}`).expect(200, { data: deleteUser, message: 'deleted' });
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
});
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @method isEmpty
|
|
3
|
-
* @param {String | Number | Object} value
|
|
4
|
-
* @returns {Boolean} true & false
|
|
5
|
-
* @description this value is Empty Check
|
|
6
|
-
*/
|
|
7
|
-
export const isEmpty = (value: string | number | object): boolean => {
|
|
8
|
-
if (value === null) {
|
|
9
|
-
return true;
|
|
10
|
-
} else if (typeof value !== 'number' && value === '') {
|
|
11
|
-
return true;
|
|
12
|
-
} else if (typeof value === 'undefined' || value === undefined) {
|
|
13
|
-
return true;
|
|
14
|
-
} else if (value !== null && typeof value === 'object' && !Object.keys(value).length) {
|
|
15
|
-
return true;
|
|
16
|
-
} else {
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
};
|
package/lib/knex/Dockerfile
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# Common build stage
|
|
2
|
-
FROM node:14.14.0-alpine3.12 as common-build-stage
|
|
3
|
-
|
|
4
|
-
COPY . ./app
|
|
5
|
-
|
|
6
|
-
WORKDIR /app
|
|
7
|
-
|
|
8
|
-
RUN npm install
|
|
9
|
-
|
|
10
|
-
EXPOSE 3000
|
|
11
|
-
|
|
12
|
-
# Development build stage
|
|
13
|
-
FROM common-build-stage as development-build-stage
|
|
14
|
-
|
|
15
|
-
ENV NODE_ENV development
|
|
16
|
-
|
|
17
|
-
CMD ["npm", "run", "dev"]
|
|
18
|
-
|
|
19
|
-
# Production build stage
|
|
20
|
-
FROM common-build-stage as production-build-stage
|
|
21
|
-
|
|
22
|
-
ENV NODE_ENV production
|
|
23
|
-
|
|
24
|
-
CMD ["npm", "run", "start"]
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { NextFunction, Request, Response } from 'express';
|
|
2
|
-
|
|
3
|
-
class IndexController {
|
|
4
|
-
public index = (req: Request, res: Response, next: NextFunction): void => {
|
|
5
|
-
try {
|
|
6
|
-
res.sendStatus(200);
|
|
7
|
-
} catch (error) {
|
|
8
|
-
next(error);
|
|
9
|
-
}
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export default IndexController;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import Knex from 'knex';
|
|
2
|
-
import { DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_DATABASE } from '@config';
|
|
3
|
-
|
|
4
|
-
const dbConnection = {
|
|
5
|
-
client: 'mysql',
|
|
6
|
-
connection: {
|
|
7
|
-
charset: 'utf8',
|
|
8
|
-
timezone: 'UTC',
|
|
9
|
-
host: DB_HOST,
|
|
10
|
-
port: DB_PORT,
|
|
11
|
-
user: DB_USER,
|
|
12
|
-
password: DB_PASSWORD,
|
|
13
|
-
database: DB_DATABASE,
|
|
14
|
-
},
|
|
15
|
-
pool: {
|
|
16
|
-
min: 2,
|
|
17
|
-
max: 10,
|
|
18
|
-
},
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export default Knex(dbConnection);
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Knex } from 'knex';
|
|
2
|
-
|
|
3
|
-
export async function up(knex: Knex): Promise<void> {
|
|
4
|
-
await knex.schema.createTable('users', table => {
|
|
5
|
-
table.bigIncrements('id').unsigned().primary();
|
|
6
|
-
table.string('email', 45).notNullable();
|
|
7
|
-
table.string('password', 255).notNullable();
|
|
8
|
-
});
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export async function down(knex: Knex): Promise<void> {
|
|
12
|
-
await knex.schema.dropTable('users');
|
|
13
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Router } from 'express';
|
|
2
|
-
import IndexController from '@controllers/index.controller';
|
|
3
|
-
import { Routes } from '@interfaces/routes.interface';
|
|
4
|
-
|
|
5
|
-
class IndexRoute implements Routes {
|
|
6
|
-
public path = '/';
|
|
7
|
-
public router = Router();
|
|
8
|
-
public indexController = new IndexController();
|
|
9
|
-
|
|
10
|
-
constructor() {
|
|
11
|
-
this.initializeRoutes();
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
private initializeRoutes() {
|
|
15
|
-
this.router.get(`${this.path}`, this.indexController.index);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export default IndexRoute;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import request from 'supertest';
|
|
2
|
-
import App from '@/app';
|
|
3
|
-
import IndexRoute from '@routes/index.route';
|
|
4
|
-
|
|
5
|
-
afterAll(async () => {
|
|
6
|
-
await new Promise<void>(resolve => setTimeout(() => resolve(), 500));
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
describe('Testing Index', () => {
|
|
10
|
-
describe('[GET] /', () => {
|
|
11
|
-
it('response statusCode 200', () => {
|
|
12
|
-
const indexRoute = new IndexRoute();
|
|
13
|
-
const app = new App([indexRoute]);
|
|
14
|
-
return request(app.getServer()).get(`${indexRoute.path}`).expect(200);
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
});
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @method isEmpty
|
|
3
|
-
* @param {String | Number | Object} value
|
|
4
|
-
* @returns {Boolean} true & false
|
|
5
|
-
* @description this value is Empty Check
|
|
6
|
-
*/
|
|
7
|
-
export const isEmpty = (value: string | number | object): boolean => {
|
|
8
|
-
if (value === null) {
|
|
9
|
-
return true;
|
|
10
|
-
} else if (typeof value !== 'number' && value === '') {
|
|
11
|
-
return true;
|
|
12
|
-
} else if (typeof value === 'undefined' || value === undefined) {
|
|
13
|
-
return true;
|
|
14
|
-
} else if (value !== null && typeof value === 'object' && !Object.keys(value).length) {
|
|
15
|
-
return true;
|
|
16
|
-
} else {
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
};
|
package/lib/mikro-orm/Dockerfile
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# Common build stage
|
|
2
|
-
FROM node:14.14.0-alpine3.12 as common-build-stage
|
|
3
|
-
|
|
4
|
-
COPY . ./app
|
|
5
|
-
|
|
6
|
-
WORKDIR /app
|
|
7
|
-
|
|
8
|
-
RUN npm install
|
|
9
|
-
|
|
10
|
-
EXPOSE 3000
|
|
11
|
-
|
|
12
|
-
# Development build stage
|
|
13
|
-
FROM common-build-stage as development-build-stage
|
|
14
|
-
|
|
15
|
-
ENV NODE_ENV development
|
|
16
|
-
|
|
17
|
-
CMD ["npm", "run", "dev"]
|
|
18
|
-
|
|
19
|
-
# Production build stage
|
|
20
|
-
FROM common-build-stage as production-build-stage
|
|
21
|
-
|
|
22
|
-
ENV NODE_ENV production
|
|
23
|
-
|
|
24
|
-
CMD ["npm", "run", "start"]
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { NextFunction, Request, Response } from 'express';
|
|
2
|
-
|
|
3
|
-
class IndexController {
|
|
4
|
-
public index = (req: Request, res: Response, next: NextFunction) => {
|
|
5
|
-
try {
|
|
6
|
-
res.sendStatus(200);
|
|
7
|
-
} catch (error) {
|
|
8
|
-
next(error);
|
|
9
|
-
}
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export default IndexController;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Router } from 'express';
|
|
2
|
-
import IndexController from '@controllers/index.controller';
|
|
3
|
-
import { Routes } from '@interfaces/routes.interface';
|
|
4
|
-
|
|
5
|
-
class IndexRoute implements Routes {
|
|
6
|
-
public path = '/';
|
|
7
|
-
public router = Router();
|
|
8
|
-
public indexController = new IndexController();
|
|
9
|
-
|
|
10
|
-
constructor() {
|
|
11
|
-
this.initializeRoutes();
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
private initializeRoutes() {
|
|
15
|
-
this.router.get(`${this.path}`, this.indexController.index);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export default IndexRoute;
|