update and delete via message broker
This commit is contained in:
		
							parent
							
								
									8651345d6e
								
							
						
					
					
						commit
						2b7c2a26e4
					
				
							
								
								
									
										5
									
								
								.env
								
								
								
								
							
							
						
						
									
										5
									
								
								.env
								
								
								
								
							| 
						 | 
				
			
			@ -6,6 +6,11 @@ SERVICE_PORT=5002
 | 
			
		|||
# PRISMA
 | 
			
		||||
DATABASE_URL="postgresql://auth:auth@v3-auth-db:5432/auth?schema=public"
 | 
			
		||||
 | 
			
		||||
# RABBIT MQ
 | 
			
		||||
RMQ_EXCHANGE_NAME=user
 | 
			
		||||
RMQ_EXCHANGE_TYPE=topic
 | 
			
		||||
RMQ_URI=amqp://v3-gateway-broker:5672
 | 
			
		||||
 | 
			
		||||
# POSTGRES
 | 
			
		||||
POSTGRES_CONTAINER=v3-auth-db
 | 
			
		||||
POSTGRES_IMAGE=postgres:15.0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,6 +6,11 @@ SERVICE_PORT=5002
 | 
			
		|||
# PRISMA
 | 
			
		||||
DATABASE_URL="postgresql://auth:auth@db:5432/auth?schema=public"
 | 
			
		||||
 | 
			
		||||
# RABBIT MQ
 | 
			
		||||
RMQ_EXCHANGES=user
 | 
			
		||||
RMQ_EXCHANGE_TYPE=topic
 | 
			
		||||
RMQ_URI=amqp://localhost:5672
 | 
			
		||||
 | 
			
		||||
# POSTGRES
 | 
			
		||||
POSTGRES_CONTAINER=v3-auth-db
 | 
			
		||||
POSTGRES_IMAGE=postgres:15.0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,6 +12,7 @@
 | 
			
		|||
        "@automapper/classes": "^8.7.7",
 | 
			
		||||
        "@automapper/core": "^8.7.7",
 | 
			
		||||
        "@automapper/nestjs": "^8.7.7",
 | 
			
		||||
        "@golevelup/nestjs-rabbitmq": "^3.4.0",
 | 
			
		||||
        "@grpc/grpc-js": "^1.8.0",
 | 
			
		||||
        "@grpc/proto-loader": "^0.7.4",
 | 
			
		||||
        "@nestjs/common": "^9.0.0",
 | 
			
		||||
| 
						 | 
				
			
			@ -898,6 +899,46 @@
 | 
			
		|||
      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@golevelup/nestjs-common": {
 | 
			
		||||
      "version": "1.4.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@golevelup/nestjs-common/-/nestjs-common-1.4.4.tgz",
 | 
			
		||||
      "integrity": "sha512-NTjtOhHTMuGwiR3lmBQKKaRr++mHQEsh8AxtaH+/EWOYKMK2Cv/8duaH9MQ0hI3TwnouyaA5IRxYR1ZCUyNXOQ==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "nanoid": "^3.2.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@golevelup/nestjs-discovery": {
 | 
			
		||||
      "version": "3.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@golevelup/nestjs-discovery/-/nestjs-discovery-3.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-ZvkXtobTKxXB1LJanP/l6Z/Fing88IMBr3uabQpU2IWjfsstjh02qYDSU2cfD6CSmNldX5ewW5Pd+SdK2lU8Sw==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "lodash": "^4.17.15"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@golevelup/nestjs-modules": {
 | 
			
		||||
      "version": "0.6.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@golevelup/nestjs-modules/-/nestjs-modules-0.6.1.tgz",
 | 
			
		||||
      "integrity": "sha512-E0STg8In8fhIivnGDJAA70+XLPHzK5bMTkCnif9FbZ8waTYDQ3T/QQL0h73k+CUFeznn1hmuEW14sNaE+8cd7w==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "lodash": "^4.17.21"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "@nestjs/common": "^9.x",
 | 
			
		||||
        "rxjs": "^7.x"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@golevelup/nestjs-rabbitmq": {
 | 
			
		||||
      "version": "3.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@golevelup/nestjs-rabbitmq/-/nestjs-rabbitmq-3.4.0.tgz",
 | 
			
		||||
      "integrity": "sha512-Ca6JtboZL11qTWl8mFYT3phs+JAhZDhct6/gKbcNEhaaEd3IU6+hEBnjs7LDbYSAIdlpZNODy/rRGSPCFmUYsQ==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@golevelup/nestjs-common": "^1.4.4",
 | 
			
		||||
        "@golevelup/nestjs-discovery": "^3.0.0",
 | 
			
		||||
        "@golevelup/nestjs-modules": "^0.6.1",
 | 
			
		||||
        "amqp-connection-manager": "^3.0.0",
 | 
			
		||||
        "amqplib": "^0.8.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@grpc/grpc-js": {
 | 
			
		||||
      "version": "1.8.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -2930,6 +2971,58 @@
 | 
			
		|||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/amqp-connection-manager": {
 | 
			
		||||
      "version": "3.9.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/amqp-connection-manager/-/amqp-connection-manager-3.9.0.tgz",
 | 
			
		||||
      "integrity": "sha512-ZKw9ckJKz40Lc2pC7DY0NVocpzPalMaCgv0sBn+N4er2QFAJul9pIiMOm/FsPHeCzB+FulV7PckOpmZvWvewGQ==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "promise-breaker": "^5.0.0"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=10.0.0",
 | 
			
		||||
        "npm": ">5.0.0"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "amqplib": "*"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/amqplib": {
 | 
			
		||||
      "version": "0.8.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.8.0.tgz",
 | 
			
		||||
      "integrity": "sha512-icU+a4kkq4Y1PS4NNi+YPDMwdlbFcZ1EZTQT2nigW3fvOb6AOgUQ9+Mk4ue0Zu5cBg/XpDzB40oH10ysrk2dmA==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "bitsyntax": "~0.1.0",
 | 
			
		||||
        "bluebird": "^3.7.2",
 | 
			
		||||
        "buffer-more-ints": "~1.0.0",
 | 
			
		||||
        "readable-stream": "1.x >=1.1.9",
 | 
			
		||||
        "safe-buffer": "~5.2.1",
 | 
			
		||||
        "url-parse": "~1.5.1"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/amqplib/node_modules/isarray": {
 | 
			
		||||
      "version": "0.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/amqplib/node_modules/readable-stream": {
 | 
			
		||||
      "version": "1.1.14",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
 | 
			
		||||
      "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "core-util-is": "~1.0.0",
 | 
			
		||||
        "inherits": "~2.0.1",
 | 
			
		||||
        "isarray": "0.0.1",
 | 
			
		||||
        "string_decoder": "~0.10.x"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/amqplib/node_modules/string_decoder": {
 | 
			
		||||
      "version": "0.10.31",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
 | 
			
		||||
      "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/ansi-colors": {
 | 
			
		||||
      "version": "4.1.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -3228,6 +3321,37 @@
 | 
			
		|||
        "node": ">=8"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/bitsyntax": {
 | 
			
		||||
      "version": "0.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/bitsyntax/-/bitsyntax-0.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-ikAdCnrloKmFOugAfxWws89/fPc+nw0OOG1IzIE72uSOg/A3cYptKCjSUhDTuj7fhsJtzkzlv7l3b8PzRHLN0Q==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "buffer-more-ints": "~1.0.0",
 | 
			
		||||
        "debug": "~2.6.9",
 | 
			
		||||
        "safe-buffer": "~5.1.2"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=0.8"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/bitsyntax/node_modules/debug": {
 | 
			
		||||
      "version": "2.6.9",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
 | 
			
		||||
      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "ms": "2.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/bitsyntax/node_modules/ms": {
 | 
			
		||||
      "version": "2.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/bitsyntax/node_modules/safe-buffer": {
 | 
			
		||||
      "version": "5.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
 | 
			
		||||
      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/bl": {
 | 
			
		||||
      "version": "4.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -3253,6 +3377,11 @@
 | 
			
		|||
        "node": ">= 6"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/bluebird": {
 | 
			
		||||
      "version": "3.7.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
 | 
			
		||||
      "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/body-parser": {
 | 
			
		||||
      "version": "1.20.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -3388,6 +3517,11 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
 | 
			
		||||
      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/buffer-more-ints": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/busboy": {
 | 
			
		||||
      "version": "1.6.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -6751,6 +6885,17 @@
 | 
			
		|||
      "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/nanoid": {
 | 
			
		||||
      "version": "3.3.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
 | 
			
		||||
      "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
 | 
			
		||||
      "bin": {
 | 
			
		||||
        "nanoid": "bin/nanoid.cjs"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/natural-compare": {
 | 
			
		||||
      "version": "1.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -7321,6 +7466,11 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/promise-breaker": {
 | 
			
		||||
      "version": "5.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/promise-breaker/-/promise-breaker-5.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-mgsWQuG4kJ1dtO6e/QlNDLFtMkMzzecsC69aI5hlLEjGHFNpHrvGhFi4LiK5jg2SMQj74/diH+wZliL9LpGsyA=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/prompts": {
 | 
			
		||||
      "version": "2.4.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -7407,6 +7557,11 @@
 | 
			
		|||
        "url": "https://github.com/sponsors/ljharb"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/querystringify": {
 | 
			
		||||
      "version": "2.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/queue-microtask": {
 | 
			
		||||
      "version": "1.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -7541,6 +7696,11 @@
 | 
			
		|||
        "node": ">=0.10.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/requires-port": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/resolve": {
 | 
			
		||||
      "version": "1.22.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -8696,6 +8856,15 @@
 | 
			
		|||
        "punycode": "^2.1.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/url-parse": {
 | 
			
		||||
      "version": "1.5.10",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
 | 
			
		||||
      "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "querystringify": "^2.1.1",
 | 
			
		||||
        "requires-port": "^1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/util-deprecate": {
 | 
			
		||||
      "version": "1.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -9712,6 +9881,42 @@
 | 
			
		|||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@golevelup/nestjs-common": {
 | 
			
		||||
      "version": "1.4.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@golevelup/nestjs-common/-/nestjs-common-1.4.4.tgz",
 | 
			
		||||
      "integrity": "sha512-NTjtOhHTMuGwiR3lmBQKKaRr++mHQEsh8AxtaH+/EWOYKMK2Cv/8duaH9MQ0hI3TwnouyaA5IRxYR1ZCUyNXOQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "nanoid": "^3.2.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@golevelup/nestjs-discovery": {
 | 
			
		||||
      "version": "3.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@golevelup/nestjs-discovery/-/nestjs-discovery-3.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-ZvkXtobTKxXB1LJanP/l6Z/Fing88IMBr3uabQpU2IWjfsstjh02qYDSU2cfD6CSmNldX5ewW5Pd+SdK2lU8Sw==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "lodash": "^4.17.15"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@golevelup/nestjs-modules": {
 | 
			
		||||
      "version": "0.6.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@golevelup/nestjs-modules/-/nestjs-modules-0.6.1.tgz",
 | 
			
		||||
      "integrity": "sha512-E0STg8In8fhIivnGDJAA70+XLPHzK5bMTkCnif9FbZ8waTYDQ3T/QQL0h73k+CUFeznn1hmuEW14sNaE+8cd7w==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "lodash": "^4.17.21"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@golevelup/nestjs-rabbitmq": {
 | 
			
		||||
      "version": "3.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@golevelup/nestjs-rabbitmq/-/nestjs-rabbitmq-3.4.0.tgz",
 | 
			
		||||
      "integrity": "sha512-Ca6JtboZL11qTWl8mFYT3phs+JAhZDhct6/gKbcNEhaaEd3IU6+hEBnjs7LDbYSAIdlpZNODy/rRGSPCFmUYsQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@golevelup/nestjs-common": "^1.4.4",
 | 
			
		||||
        "@golevelup/nestjs-discovery": "^3.0.0",
 | 
			
		||||
        "@golevelup/nestjs-modules": "^0.6.1",
 | 
			
		||||
        "amqp-connection-manager": "^3.0.0",
 | 
			
		||||
        "amqplib": "^0.8.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@grpc/grpc-js": {
 | 
			
		||||
      "version": "1.8.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -11260,6 +11465,50 @@
 | 
			
		|||
        "ajv": "^8.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "amqp-connection-manager": {
 | 
			
		||||
      "version": "3.9.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/amqp-connection-manager/-/amqp-connection-manager-3.9.0.tgz",
 | 
			
		||||
      "integrity": "sha512-ZKw9ckJKz40Lc2pC7DY0NVocpzPalMaCgv0sBn+N4er2QFAJul9pIiMOm/FsPHeCzB+FulV7PckOpmZvWvewGQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "promise-breaker": "^5.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "amqplib": {
 | 
			
		||||
      "version": "0.8.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.8.0.tgz",
 | 
			
		||||
      "integrity": "sha512-icU+a4kkq4Y1PS4NNi+YPDMwdlbFcZ1EZTQT2nigW3fvOb6AOgUQ9+Mk4ue0Zu5cBg/XpDzB40oH10ysrk2dmA==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "bitsyntax": "~0.1.0",
 | 
			
		||||
        "bluebird": "^3.7.2",
 | 
			
		||||
        "buffer-more-ints": "~1.0.0",
 | 
			
		||||
        "readable-stream": "1.x >=1.1.9",
 | 
			
		||||
        "safe-buffer": "~5.2.1",
 | 
			
		||||
        "url-parse": "~1.5.1"
 | 
			
		||||
      },
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "isarray": {
 | 
			
		||||
          "version": "0.0.1",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
 | 
			
		||||
          "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
 | 
			
		||||
        },
 | 
			
		||||
        "readable-stream": {
 | 
			
		||||
          "version": "1.1.14",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
 | 
			
		||||
          "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
 | 
			
		||||
          "requires": {
 | 
			
		||||
            "core-util-is": "~1.0.0",
 | 
			
		||||
            "inherits": "~2.0.1",
 | 
			
		||||
            "isarray": "0.0.1",
 | 
			
		||||
            "string_decoder": "~0.10.x"
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        "string_decoder": {
 | 
			
		||||
          "version": "0.10.31",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
 | 
			
		||||
          "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "ansi-colors": {
 | 
			
		||||
      "version": "4.1.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -11480,6 +11729,36 @@
 | 
			
		|||
      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "bitsyntax": {
 | 
			
		||||
      "version": "0.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/bitsyntax/-/bitsyntax-0.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-ikAdCnrloKmFOugAfxWws89/fPc+nw0OOG1IzIE72uSOg/A3cYptKCjSUhDTuj7fhsJtzkzlv7l3b8PzRHLN0Q==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "buffer-more-ints": "~1.0.0",
 | 
			
		||||
        "debug": "~2.6.9",
 | 
			
		||||
        "safe-buffer": "~5.1.2"
 | 
			
		||||
      },
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "debug": {
 | 
			
		||||
          "version": "2.6.9",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
 | 
			
		||||
          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
 | 
			
		||||
          "requires": {
 | 
			
		||||
            "ms": "2.0.0"
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        "ms": {
 | 
			
		||||
          "version": "2.0.0",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
 | 
			
		||||
          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
 | 
			
		||||
        },
 | 
			
		||||
        "safe-buffer": {
 | 
			
		||||
          "version": "5.1.2",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
 | 
			
		||||
          "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "bl": {
 | 
			
		||||
      "version": "4.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -11504,6 +11783,11 @@
 | 
			
		|||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "bluebird": {
 | 
			
		||||
      "version": "3.7.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
 | 
			
		||||
      "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
 | 
			
		||||
    },
 | 
			
		||||
    "body-parser": {
 | 
			
		||||
      "version": "1.20.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -11601,6 +11885,11 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
 | 
			
		||||
      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "buffer-more-ints": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg=="
 | 
			
		||||
    },
 | 
			
		||||
    "busboy": {
 | 
			
		||||
      "version": "1.6.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -14124,6 +14413,11 @@
 | 
			
		|||
      "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "nanoid": {
 | 
			
		||||
      "version": "3.3.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
 | 
			
		||||
      "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
 | 
			
		||||
    },
 | 
			
		||||
    "natural-compare": {
 | 
			
		||||
      "version": "1.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -14531,6 +14825,11 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
 | 
			
		||||
    },
 | 
			
		||||
    "promise-breaker": {
 | 
			
		||||
      "version": "5.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/promise-breaker/-/promise-breaker-5.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-mgsWQuG4kJ1dtO6e/QlNDLFtMkMzzecsC69aI5hlLEjGHFNpHrvGhFi4LiK5jg2SMQj74/diH+wZliL9LpGsyA=="
 | 
			
		||||
    },
 | 
			
		||||
    "prompts": {
 | 
			
		||||
      "version": "2.4.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -14600,6 +14899,11 @@
 | 
			
		|||
        "side-channel": "^1.0.4"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "querystringify": {
 | 
			
		||||
      "version": "2.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "queue-microtask": {
 | 
			
		||||
      "version": "1.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -14698,6 +15002,11 @@
 | 
			
		|||
      "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "requires-port": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "resolve": {
 | 
			
		||||
      "version": "1.22.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -15512,6 +15821,15 @@
 | 
			
		|||
        "punycode": "^2.1.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "url-parse": {
 | 
			
		||||
      "version": "1.5.10",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
 | 
			
		||||
      "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "querystringify": "^2.1.1",
 | 
			
		||||
        "requires-port": "^1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "util-deprecate": {
 | 
			
		||||
      "version": "1.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,6 +24,7 @@
 | 
			
		|||
    "@automapper/classes": "^8.7.7",
 | 
			
		||||
    "@automapper/core": "^8.7.7",
 | 
			
		||||
    "@automapper/nestjs": "^8.7.7",
 | 
			
		||||
    "@golevelup/nestjs-rabbitmq": "^3.4.0",
 | 
			
		||||
    "@grpc/grpc-js": "^1.8.0",
 | 
			
		||||
    "@grpc/proto-loader": "^0.7.4",
 | 
			
		||||
    "@nestjs/common": "^9.0.0",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,52 @@
 | 
			
		|||
import { RabbitSubscribe } from '@golevelup/nestjs-rabbitmq';
 | 
			
		||||
import { Controller } from '@nestjs/common';
 | 
			
		||||
import { CommandBus } from '@nestjs/cqrs';
 | 
			
		||||
import { UpdateUsernameCommand } from '../../commands/update-username.command';
 | 
			
		||||
import { Type } from '../../domain/dtos/type.enum';
 | 
			
		||||
import { UpdateUsernameRequest } from '../../domain/dtos/update-username.request';
 | 
			
		||||
import { DeleteAuthRequest } from '../../domain/dtos/delete-auth.request';
 | 
			
		||||
import { DeleteAuthCommand } from '../../commands/delete-auth.command';
 | 
			
		||||
 | 
			
		||||
@Controller()
 | 
			
		||||
export class AuthMessagerController {
 | 
			
		||||
  constructor(private readonly _commandBus: CommandBus) {}
 | 
			
		||||
 | 
			
		||||
  @RabbitSubscribe({
 | 
			
		||||
    exchange: 'user',
 | 
			
		||||
    routingKey: 'user.update',
 | 
			
		||||
  })
 | 
			
		||||
  public async userUpdatedHandler(message: string) {
 | 
			
		||||
    const updatedUser = JSON.parse(message);
 | 
			
		||||
    if (!updatedUser.hasOwnProperty('uuid')) throw new Error();
 | 
			
		||||
    if (updatedUser.hasOwnProperty('email')) {
 | 
			
		||||
      const updateUsernameRequest = new UpdateUsernameRequest();
 | 
			
		||||
      updateUsernameRequest.uuid = updatedUser.uuid;
 | 
			
		||||
      updateUsernameRequest.username = updatedUser.email;
 | 
			
		||||
      updateUsernameRequest.type = Type.EMAIL;
 | 
			
		||||
      this._commandBus.execute(
 | 
			
		||||
        new UpdateUsernameCommand(updateUsernameRequest),
 | 
			
		||||
      );
 | 
			
		||||
    }
 | 
			
		||||
    if (updatedUser.hasOwnProperty('phone')) {
 | 
			
		||||
      const updateUsernameRequest = new UpdateUsernameRequest();
 | 
			
		||||
      updateUsernameRequest.uuid = updatedUser.uuid;
 | 
			
		||||
      updateUsernameRequest.username = updatedUser.phone;
 | 
			
		||||
      updateUsernameRequest.type = Type.PHONE;
 | 
			
		||||
      this._commandBus.execute(
 | 
			
		||||
        new UpdateUsernameCommand(updateUsernameRequest),
 | 
			
		||||
      );
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @RabbitSubscribe({
 | 
			
		||||
    exchange: 'user',
 | 
			
		||||
    routingKey: 'user.delete',
 | 
			
		||||
  })
 | 
			
		||||
  public async userDeletedHandler(message: string) {
 | 
			
		||||
    const deletedUser = JSON.parse(message);
 | 
			
		||||
    if (!deletedUser.hasOwnProperty('uuid')) throw new Error();
 | 
			
		||||
    const deleteAuthRequest = new DeleteAuthRequest();
 | 
			
		||||
    deleteAuthRequest.uuid = deletedUser.uuid;
 | 
			
		||||
    this._commandBus.execute(new DeleteAuthCommand(deleteAuthRequest));
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -12,10 +12,30 @@ import { AddUsernameUseCase } from './domain/usecases/add-username.usecase';
 | 
			
		|||
import { UpdatePasswordUseCase } from './domain/usecases/update-password.usecase';
 | 
			
		||||
import { DeleteUsernameUseCase } from './domain/usecases/delete-username.usecase';
 | 
			
		||||
import { DeleteAuthUseCase } from './domain/usecases/delete-auth.usecase';
 | 
			
		||||
import { RabbitMQModule } from '@golevelup/nestjs-rabbitmq';
 | 
			
		||||
import { ConfigModule, ConfigService } from '@nestjs/config';
 | 
			
		||||
import { AuthMessagerController } from './adapters/primaries/auth-messager.controller';
 | 
			
		||||
 | 
			
		||||
@Module({
 | 
			
		||||
  imports: [DatabaseModule, CqrsModule],
 | 
			
		||||
  controllers: [AuthController],
 | 
			
		||||
  imports: [
 | 
			
		||||
    DatabaseModule,
 | 
			
		||||
    CqrsModule,
 | 
			
		||||
    RabbitMQModule.forRootAsync(RabbitMQModule, {
 | 
			
		||||
      imports: [ConfigModule],
 | 
			
		||||
      useFactory: async (configService: ConfigService) => ({
 | 
			
		||||
        exchanges: [
 | 
			
		||||
          {
 | 
			
		||||
            name: configService.get<string>('RMQ_EXCHANGE_NAME'),
 | 
			
		||||
            type: configService.get<string>('RMQ_EXCHANGE_TYPE'),
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        uri: configService.get<string>('RMQ_URI'),
 | 
			
		||||
        enableControllerDiscovery: true,
 | 
			
		||||
      }),
 | 
			
		||||
      inject: [ConfigService],
 | 
			
		||||
    }),
 | 
			
		||||
  ],
 | 
			
		||||
  controllers: [AuthController, AuthMessagerController],
 | 
			
		||||
  providers: [
 | 
			
		||||
    AuthProfile,
 | 
			
		||||
    UsernameProfile,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue