Просмотр исходного кода

add 'app:serviceInstanceId' key to config

Yuki Takei 1 год назад
Родитель
Сommit
cc21af77f6

+ 28 - 0
apps/app/src/migrations/20250109000000-generate-service-instance-id.js

@@ -0,0 +1,28 @@
+import mongoose from 'mongoose';
+import { v4 as uuidv4 } from 'uuid';
+
+import { configManager } from '~/server/service/config-manager';
+import { getMongoUri, mongoOptions } from '~/server/util/mongoose-utils';
+import loggerFactory from '~/utils/logger';
+
+
+const logger = loggerFactory('growi:migrate:generate-service-instance-id');
+
+module.exports = {
+  async up(db) {
+    logger.info('Apply migration');
+    await mongoose.connect(getMongoUri(), mongoOptions);
+
+    await configManager.loadConfigs();
+
+    const isInstalled = configManager.getConfig('app:installed');
+    if (isInstalled) {
+      logger.info('Generate serviceInstanceId for the system that is already installed');
+      await configManager.updateConfig('app:serviceInstanceId', uuidv4(), { skipPubsub: true });
+    }
+  },
+
+  async down() {
+    // No rollback
+  },
+};

+ 4 - 0
apps/app/src/server/service/config-manager/config-definition.ts

@@ -31,6 +31,7 @@ export const CONFIG_KEYS = [
 
   // App Settings
   'app:installed',
+  'app:serviceInstanceId',
   'app:isV5Compatible',
   'app:isMaintenanceMode',
   'app:confidential',
@@ -338,6 +339,9 @@ export const CONFIG_DEFINITIONS = {
   'app:installed': defineConfig<boolean>({
     defaultValue: false,
   }),
+  'app:serviceInstanceId': defineConfig<string | undefined>({
+    defaultValue: undefined,
+  }),
   'app:isV5Compatible': defineConfig<boolean>({
     defaultValue: false,
   }),

+ 2 - 0
apps/app/src/server/service/installer.ts

@@ -7,6 +7,7 @@ import { addSeconds } from 'date-fns/addSeconds';
 import ExtensibleCustomError from 'extensible-custom-error';
 import fs from 'graceful-fs';
 import mongoose from 'mongoose';
+import { v4 as uuidv4 } from 'uuid';
 
 import loggerFactory from '~/utils/logger';
 
@@ -116,6 +117,7 @@ export class InstallerService {
       'app:fileUpload': true,
       'app:isV5Compatible': true,
       'app:globalLang': globalLang,
+      'app:serviceInstanceId': uuidv4(),
     }, { skipPubsub: true });
 
     if (options?.allowGuestMode) {