From 70276800e6e8a2af7223a1621310e972d887c436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Claus-Peter=20H=C3=BCbner?= Date: Mon, 13 Feb 2023 22:19:52 +0100 Subject: [PATCH] rework PR-comments --- backend/src/config/index.ts | 2 +- .../federation/client/1_0/FederationClient.ts | 21 +++------ .../federation/client/1_1/FederationClient.ts | 21 +++------ backend/src/federation/validateCommunities.ts | 44 +++++++++--------- .../Community.ts | 45 ------------------- .../Community.ts | 4 +- database/entity/Community.ts | 2 +- .../0060-add_verified_at_to communities.ts | 17 ------- ...le.ts => 0060-update_communities_table.ts} | 8 +--- dht-node/src/config/index.ts | 2 +- federation/src/config/index.ts | 2 +- 11 files changed, 41 insertions(+), 127 deletions(-) delete mode 100644 database/entity/0060-add_verified_at_to_communities/Community.ts rename database/entity/{0061-update_communities_table => 0060-update_communities_table}/Community.ts (95%) delete mode 100644 database/migrations/0060-add_verified_at_to communities.ts rename database/migrations/{0061-update_communities_table.ts => 0060-update_communities_table.ts} (81%) diff --git a/backend/src/config/index.ts b/backend/src/config/index.ts index 626ed873a..27b51b47d 100644 --- a/backend/src/config/index.ts +++ b/backend/src/config/index.ts @@ -10,7 +10,7 @@ Decimal.set({ }) const constants = { - DB_VERSION: '0061-update_communities_table', + DB_VERSION: '0060-update_communities_table', DECAY_START_TIME: new Date('2021-05-13 17:46:31-0000'), // GMT+0 LOG4JS_CONFIG: 'log4js-config.json', // default log level on production should be info diff --git a/backend/src/federation/client/1_0/FederationClient.ts b/backend/src/federation/client/1_0/FederationClient.ts index 2c6a77477..1c0ec4996 100644 --- a/backend/src/federation/client/1_0/FederationClient.ts +++ b/backend/src/federation/client/1_0/FederationClient.ts @@ -2,6 +2,7 @@ import { gql } from 'graphql-request' import { backendLogger as logger } from '@/server/logger' import { Community as DbCommunity } from '@entity/Community' import { GraphQLGetClient } from '../GraphQLGetClient' +import LogError from '@/server/LogError' export async function requestGetPublicKey(dbCom: DbCommunity): Promise { let endpoint = dbCom.endPoint.endsWith('/') ? dbCom.endPoint : dbCom.endPoint + '/' @@ -18,28 +19,16 @@ export async function requestGetPublicKey(dbCom: DbCommunity): Promise { let endpoint = dbCom.endPoint.endsWith('/') ? dbCom.endPoint : dbCom.endPoint + '/' @@ -18,28 +19,16 @@ export async function requestGetPublicKey(dbCom: DbCommunity): Promise { logger.info( @@ -23,21 +24,17 @@ export async function validateCommunities(): Promise { .where({ foreign: true, verifiedAt: IsNull() }) .orWhere('verified_at < last_announced_at') .getMany() - /* - const dbCommunities: DbCommunity[] = await DbCommunity.getRepository().manager.query( - 'SELECT * FROM `communities` `Community` WHERE (`Community`.`verified_at` IS NULL OR `Community`.`verified_at` < `Community`.`last_announced_at`)', - ) - */ + logger.debug(`Federation: found ${dbCommunities.length} dbCommunities`) - if (dbCommunities) { - dbCommunities.forEach(async function (dbCom) { - logger.debug(`Federation: dbCom: ${JSON.stringify(dbCom)}`) - const apiValueStrings: string[] = Object.values(ApiVersionType) - logger.debug(`suppported ApiVersions=`, apiValueStrings) - if (apiValueStrings.includes(dbCom.apiVersion)) { - logger.debug( - `Federation: validate publicKey for dbCom: ${dbCom.id} with apiVersion=${dbCom.apiVersion}`, - ) + dbCommunities.forEach(async function (dbCom) { + logger.debug(`Federation: dbCom: ${JSON.stringify(dbCom)}`) + const apiValueStrings: string[] = Object.values(ApiVersionType) + logger.debug(`suppported ApiVersions=`, apiValueStrings) + if (apiValueStrings.includes(dbCom.apiVersion)) { + logger.debug( + `Federation: validate publicKey for dbCom: ${dbCom.id} with apiVersion=${dbCom.apiVersion}`, + ) + try { const pubKey = await invokeVersionedRequestGetPublicKey(dbCom) logger.info( `Federation: received publicKey=${pubKey} from endpoint=${dbCom.endPoint}/${dbCom.apiVersion}`, @@ -53,15 +50,22 @@ export async function validateCommunities(): Promise { DbCommunity.delete({ id: dbCom.id }) } */ - } else { - logger.warn( - `Federation: dbCom: ${dbCom.id} with unsupported apiVersion=${dbCom.apiVersion}; supported versions=${apiValueStrings}`, - ) + } catch (err) { + if (!isLogError(err)) { + logger.error(`Error:`, err) + } } - }) - } + } else { + logger.warn( + `Federation: dbCom: ${dbCom.id} with unsupported apiVersion=${dbCom.apiVersion}; supported versions=${apiValueStrings}`, + ) + } + }) } +function isLogError(err: any) { + return err instanceof LogError +} async function invokeVersionedRequestGetPublicKey(dbCom: DbCommunity): Promise { switch (dbCom.apiVersion) { case ApiVersionType.V1_0: diff --git a/database/entity/0060-add_verified_at_to_communities/Community.ts b/database/entity/0060-add_verified_at_to_communities/Community.ts deleted file mode 100644 index eb4296e35..000000000 --- a/database/entity/0060-add_verified_at_to_communities/Community.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { - BaseEntity, - Entity, - PrimaryGeneratedColumn, - Column, - CreateDateColumn, - UpdateDateColumn, -} from 'typeorm' - -@Entity('communities') -export class Community extends BaseEntity { - @PrimaryGeneratedColumn('increment', { unsigned: true }) - id: number - - @Column({ name: 'public_key', type: 'binary', length: 64, default: null, nullable: true }) - publicKey: Buffer - - @Column({ name: 'api_version', length: 10, nullable: false }) - apiVersion: string - - @Column({ name: 'end_point', length: 255, nullable: false }) - endPoint: string - - @Column({ name: 'last_announced_at', type: 'datetime', nullable: false }) - lastAnnouncedAt: Date - - @Column({ name: 'verified_at', type: 'datetime', nullable: true }) - verifiedAt: Date - - @CreateDateColumn({ - name: 'created_at', - type: 'datetime', - default: () => 'CURRENT_TIMESTAMP(3)', - nullable: false, - }) - createdAt: Date - - @UpdateDateColumn({ - name: 'updated_at', - type: 'datetime', - onUpdate: 'CURRENT_TIMESTAMP(3)', - nullable: true, - }) - updatedAt: Date | null -} diff --git a/database/entity/0061-update_communities_table/Community.ts b/database/entity/0060-update_communities_table/Community.ts similarity index 95% rename from database/entity/0061-update_communities_table/Community.ts rename to database/entity/0060-update_communities_table/Community.ts index b4c86222e..5ded76cf9 100644 --- a/database/entity/0061-update_communities_table/Community.ts +++ b/database/entity/0060-update_communities_table/Community.ts @@ -15,7 +15,7 @@ export class Community extends BaseEntity { @Column({ name: 'foreign', type: 'bool', nullable: false, default: true }) foreign: boolean - @Column({ name: 'public_key', type: 'binary', length: 64, default: null, nullable: false }) + @Column({ name: 'public_key', type: 'binary', length: 64, default: null, nullable: true }) publicKey: Buffer @Column({ name: 'api_version', length: 10, nullable: false }) @@ -28,7 +28,7 @@ export class Community extends BaseEntity { lastAnnouncedAt: Date @Column({ name: 'verified_at', type: 'datetime', nullable: true }) - verifiedAt: Date | null + verifiedAt: Date @Column({ name: 'last_error_at', type: 'datetime', nullable: true }) lastErrorAt: Date diff --git a/database/entity/Community.ts b/database/entity/Community.ts index 33e5b1f05..80e5ace30 100644 --- a/database/entity/Community.ts +++ b/database/entity/Community.ts @@ -1 +1 @@ -export { Community } from './0061-update_communities_table/Community' +export { Community } from './0060-update_communities_table/Community' diff --git a/database/migrations/0060-add_verified_at_to communities.ts b/database/migrations/0060-add_verified_at_to communities.ts deleted file mode 100644 index 1759189f6..000000000 --- a/database/migrations/0060-add_verified_at_to communities.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* MIGRATION TO CREATE THE FEDERATION COMMUNITY TABLES - * - * This migration creates the `community` and 'communityfederation' tables in the `apollo` database (`gradido_community`). - */ - -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -/* eslint-disable @typescript-eslint/no-explicit-any */ - -export async function upgrade(queryFn: (query: string, values?: any[]) => Promise>) { - await queryFn( - 'ALTER TABLE `communities` ADD COLUMN `verified_at` datetime(3) DEFAULT NULL AFTER `last_announced_at`;', - ) -} - -export async function downgrade(queryFn: (query: string, values?: any[]) => Promise>) { - await queryFn('ALTER TABLE `communities` DROP COLUMN `verified_at`;') -} diff --git a/database/migrations/0061-update_communities_table.ts b/database/migrations/0060-update_communities_table.ts similarity index 81% rename from database/migrations/0061-update_communities_table.ts rename to database/migrations/0060-update_communities_table.ts index b3cdab61d..79180e587 100644 --- a/database/migrations/0061-update_communities_table.ts +++ b/database/migrations/0060-update_communities_table.ts @@ -13,14 +13,9 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis await queryFn( 'ALTER TABLE `communities` ADD COLUMN `foreign` tinyint(4) NOT NULL DEFAULT 1 AFTER `id`;', ) - await queryFn( - 'ALTER TABLE `communities` MODIFY COLUMN `public_key` binary(64) NOT NULL AFTER `foreign`;', - ) - /* await queryFn( 'ALTER TABLE `communities` ADD COLUMN `verified_at` datetime(3) AFTER `last_announced_at`;', ) - */ await queryFn( 'ALTER TABLE `communities` ADD COLUMN `last_error_at` datetime(3) AFTER `verified_at`;', ) @@ -31,8 +26,7 @@ export async function downgrade(queryFn: (query: string, values?: any[]) => Prom await queryFn( 'ALTER TABLE `communities` MODIFY COLUMN `last_announced_at` datetime(3) NOT NULL AFTER `end_point`;', ) - await queryFn('ALTER TABLE `communities` MODIFY COLUMN `public_key` binary(64) AFTER `id`;') await queryFn('ALTER TABLE `communities` DROP COLUMN `foreign`;') - // await queryFn('ALTER TABLE `communities` DROP COLUMN `verified_at`;') + await queryFn('ALTER TABLE `communities` DROP COLUMN `verified_at`;') await queryFn('ALTER TABLE `communities` DROP COLUMN `last_error_at`;') } diff --git a/dht-node/src/config/index.ts b/dht-node/src/config/index.ts index bdd3a992c..8210ddfcc 100644 --- a/dht-node/src/config/index.ts +++ b/dht-node/src/config/index.ts @@ -3,7 +3,7 @@ import dotenv from 'dotenv' dotenv.config() const constants = { - DB_VERSION: '0061-update_communities_table', + DB_VERSION: '0060-update_communities_table', LOG4JS_CONFIG: 'log4js-config.json', // default log level on production should be info LOG_LEVEL: process.env.LOG_LEVEL || 'info', diff --git a/federation/src/config/index.ts b/federation/src/config/index.ts index 588f52c60..ab9ef64dc 100644 --- a/federation/src/config/index.ts +++ b/federation/src/config/index.ts @@ -11,7 +11,7 @@ Decimal.set({ */ const constants = { - DB_VERSION: '0059-add_hide_amount_to_users', + DB_VERSION: '0060-update_communities_table', // DECAY_START_TIME: new Date('2021-05-13 17:46:31-0000'), // GMT+0 LOG4JS_CONFIG: 'log4js-config.json', // default log level on production should be info