From ef73207609732abb605a5c9c32864c1dee53a60b Mon Sep 17 00:00:00 2001 From: Claus-Peter Huebner Date: Wed, 20 Dec 2023 21:07:15 +0100 Subject: [PATCH] adapt user migrations on concept requirements --- backend/src/apis/gms/model/GmsEnums.ts | 2 +- backend/src/apis/gms/model/GmsUser.ts | 27 ++++++++++++++---- backend/src/seeds/gmsUsers.ts | 38 ++++++++++++++++---------- 3 files changed, 47 insertions(+), 20 deletions(-) diff --git a/backend/src/apis/gms/model/GmsEnums.ts b/backend/src/apis/gms/model/GmsEnums.ts index 5fa08a3f7..1342327d1 100644 --- a/backend/src/apis/gms/model/GmsEnums.ts +++ b/backend/src/apis/gms/model/GmsEnums.ts @@ -1,7 +1,7 @@ import { registerEnumType } from 'type-graphql' export enum GmsPublishNameType { - GMS_PUBLISH_NAME_NOTHING = 0, + GMS_PUBLISH_NAME_ALIAS_OR_INITALS = 0, GMS_PUBLISH_NAME_INITIALS = 1, GMS_PUBLISH_NAME_FIRST = 2, GMS_PUBLISH_NAME_FIRST_INITIAL = 3, diff --git a/backend/src/apis/gms/model/GmsUser.ts b/backend/src/apis/gms/model/GmsUser.ts index efea12304..2fad3bd1e 100644 --- a/backend/src/apis/gms/model/GmsUser.ts +++ b/backend/src/apis/gms/model/GmsUser.ts @@ -11,7 +11,7 @@ export class GmsUser { this.mobile = this.getGmsPhone(user) this.firstName = this.getGmsFirstName(user) this.lastName = this.getGmsLastName(user) - this.alias = user.alias ? user.alias : undefined + this.alias = this.getGmsAlias(user) this.type = GmsLocationType.GMS_LOCATION_TYPE_RANDOM this.location = null } @@ -37,6 +37,16 @@ export class GmsUser { language: string location: unknown + private getGmsAlias(user: dbUser): string | undefined { + if ( + user.gmsAllowed && + user.alias && + user.gmsPublishName === GmsPublishNameType.GMS_PUBLISH_NAME_ALIAS_OR_INITALS + ) { + return user.alias + } + } + private getGmsFirstName(user: dbUser): string | undefined { if ( user.gmsAllowed && @@ -46,8 +56,13 @@ export class GmsUser { ) { return user.firstName } - if (user.gmsAllowed && user.gmsPublishName === GmsPublishNameType.GMS_PUBLISH_NAME_INITIALS) { - return user.firstName.substring(0, 1) + '.' + if ( + user.gmsAllowed && + ((!user.alias && + user.gmsPublishName === GmsPublishNameType.GMS_PUBLISH_NAME_ALIAS_OR_INITALS) || + user.gmsPublishName === GmsPublishNameType.GMS_PUBLISH_NAME_INITIALS) + ) { + return user.firstName.substring(0, 1) } } @@ -57,10 +72,12 @@ export class GmsUser { } if ( user.gmsAllowed && - (user.gmsPublishName === GmsPublishNameType.GMS_PUBLISH_NAME_FIRST_INITIAL || + ((!user.alias && + user.gmsPublishName === GmsPublishNameType.GMS_PUBLISH_NAME_ALIAS_OR_INITALS) || + user.gmsPublishName === GmsPublishNameType.GMS_PUBLISH_NAME_FIRST_INITIAL || user.gmsPublishName === GmsPublishNameType.GMS_PUBLISH_NAME_INITIALS) ) { - return user.lastName.substring(0, 1) + '.' + return user.lastName.substring(0, 1) } } diff --git a/backend/src/seeds/gmsUsers.ts b/backend/src/seeds/gmsUsers.ts index 50cd67c52..6f636bd8c 100644 --- a/backend/src/seeds/gmsUsers.ts +++ b/backend/src/seeds/gmsUsers.ts @@ -55,9 +55,15 @@ const run = async () => { throw new LogError('HomeCommunity needs GMS-ApiKey to publish user data to GMS.') } // read the ids of all local users, which are still not gms registered - const userIds = await DbUser.query( - 'SELECT `id` from `users` `u` where `u`.`foreign` = false and `deleted_at` is null and `gms_registered` = false', - ) + const userIds = await DbUser.createQueryBuilder() + .select('id') + .where({ foreign: false }) + .andWhere('deleted_at is null') + .andWhere({ gmsRegistered: false }) + .getRawMany() + // const userIds = await DbUser.query( + // 'SELECT `id` from `users` `u` where `u`.`foreign` = false and `deleted_at` is null and `gms_registered` = false', + // ) logger.debug('userIds:', userIds) for (const idStr of userIds) { @@ -68,18 +74,22 @@ const run = async () => { }) if (user) { logger.debug('found local User:', user) - const gmsUser = new GmsUser(user) - try { - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument - if (await createGmsUser(homeCom.gmsApiKey, gmsUser)) { - logger.debug('GMS user published successfully:', gmsUser) - user.gmsRegistered = true - user.gmsRegisteredAt = new Date() - await DbUser.save(user) - logger.debug('mark user as gms published:', user) + if (user.gmsAllowed) { + const gmsUser = new GmsUser(user) + try { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + if (await createGmsUser(homeCom.gmsApiKey, gmsUser)) { + logger.debug('GMS user published successfully:', gmsUser) + user.gmsRegistered = true + user.gmsRegisteredAt = new Date() + await DbUser.save(user) + logger.debug('mark user as gms published:', user) + } + } catch (err) { + logger.warn('publishing user fails with ', err) } - } catch (err) { - logger.warn('publishing user fails with ', err) + } else { + logger.debug('GMS-Publishing not allowed by user settings:', user) } } }