Jelajahi Sumber

feat(syncing-server): add procedure to trigger transition for specific user

Karol Sójko 1 tahun lalu
induk
melakukan
8cb92d9678

+ 50 - 0
packages/syncing-server/bin/transition.ts

@@ -0,0 +1,50 @@
+import 'reflect-metadata'
+
+import { Logger } from 'winston'
+
+import { ContainerConfigLoader } from '../src/Bootstrap/Container'
+import TYPES from '../src/Bootstrap/Types'
+import { Env } from '../src/Bootstrap/Env'
+import { TriggerTransitionFromPrimaryToSecondaryDatabaseForUser } from '../src/Domain/UseCase/Transition/TriggerTransitionFromPrimaryToSecondaryDatabaseForUser/TriggerTransitionFromPrimaryToSecondaryDatabaseForUser'
+
+const inputArgs = process.argv.slice(2)
+const userUuid = inputArgs[0]
+
+const requestTransition = async (
+  triggerTransitionFromPrimaryToSecondaryDatabaseForUser: TriggerTransitionFromPrimaryToSecondaryDatabaseForUser,
+  logger: Logger,
+): Promise<void> => {
+  const result = await triggerTransitionFromPrimaryToSecondaryDatabaseForUser.execute({
+    userUuid,
+  })
+  if (result.isFailed()) {
+    logger.error(`Could not trigger transition for user ${userUuid}: ${result.getError()}`)
+  }
+
+  return
+}
+
+const container = new ContainerConfigLoader()
+void container.load().then((container) => {
+  const env: Env = new Env()
+  env.load()
+
+  const logger: Logger = container.get(TYPES.Sync_Logger)
+
+  logger.info(`Starting transitiong for user ${userUuid} ...`)
+
+  const triggerTransitionFromPrimaryToSecondaryDatabaseForUser: TriggerTransitionFromPrimaryToSecondaryDatabaseForUser =
+    container.get(TYPES.Sync_TriggerTransitionFromPrimaryToSecondaryDatabaseForUser)
+
+  Promise.resolve(requestTransition(triggerTransitionFromPrimaryToSecondaryDatabaseForUser, logger))
+    .then(() => {
+      logger.info(`Transition triggered for user ${userUuid}`)
+
+      process.exit(0)
+    })
+    .catch((error) => {
+      logger.error(`Could not trigger transition for user ${userUuid}: ${error.message}`)
+
+      process.exit(1)
+    })
+})

+ 11 - 0
packages/syncing-server/docker/entrypoint-transition.js

@@ -0,0 +1,11 @@
+'use strict'
+
+const path = require('path')
+
+const pnp = require(path.normalize(path.resolve(__dirname, '../../..', '.pnp.cjs'))).setup()
+
+const index = require(path.normalize(path.resolve(__dirname, '../dist/bin/transition.js')))
+
+Object.defineProperty(exports, '__esModule', { value: true })
+
+exports.default = index

+ 6 - 0
packages/syncing-server/docker/entrypoint.sh

@@ -14,6 +14,12 @@ case "$COMMAND" in
     node docker/entrypoint-worker.js
     ;;
 
+  'transition' )
+    echo "[Docker] Starting transition Single User..."
+    USER_UUID=$1 && shift 1
+    node docker/entrypoint-transition.js $USER_UUID
+    ;;
+
    * )
     echo "[Docker] Unknown command"
     ;;