Merge pull request #3016 from gradido/camelcase-exception

refactor(backend): camelcase exception for FederationClient_XX_X
This commit is contained in:
Ulf Gebhardt 2023-05-23 17:22:05 +02:00 committed by GitHub
commit 36cc3350f8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 23 additions and 24 deletions

View File

@ -27,7 +27,8 @@ module.exports = {
}, },
}, },
rules: { rules: {
'no-console': ['error'], 'no-console': 'error',
camelcase: ['error', { allow: ['FederationClient_*'] }],
'no-debugger': 'error', 'no-debugger': 'error',
'prettier/prettier': [ 'prettier/prettier': [
'error', 'error',
@ -184,6 +185,7 @@ module.exports = {
tsconfigRootDir: __dirname, tsconfigRootDir: __dirname,
project: ['./tsconfig.json', '**/tsconfig.json'], project: ['./tsconfig.json', '**/tsconfig.json'],
// this is to properly reference the referenced project database without requirement of compiling it // this is to properly reference the referenced project database without requirement of compiling it
// eslint-disable-next-line camelcase
EXPERIMENTAL_useSourceOfProjectReferenceRedirect: true, EXPERIMENTAL_useSourceOfProjectReferenceRedirect: true,
}, },
}, },

View File

@ -1,5 +0,0 @@
// eslint-disable-next-line camelcase
import { Client_1_0 } from './Client_1_0'
// eslint-disable-next-line camelcase
export class Client_1_1 extends Client_1_0 {}

View File

@ -2,22 +2,19 @@ import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCom
import { ApiVersionType } from '@/federation/enum/apiVersionType' import { ApiVersionType } from '@/federation/enum/apiVersionType'
// eslint-disable-next-line camelcase import { FederationClient_1_0 } from './FederationClient_1_0'
import { Client_1_0 } from './Client_1_0' import { FederationClient_1_1 } from './FederationClient_1_1'
// eslint-disable-next-line camelcase
import { Client_1_1 } from './Client_1_1'
// eslint-disable-next-line camelcase type FederationClientType = FederationClient_1_0 | FederationClient_1_1
type FederationClient = Client_1_0 | Client_1_1
interface ClientInstance { interface ClientInstance {
id: number id: number
// eslint-disable-next-line no-use-before-define // eslint-disable-next-line no-use-before-define
client: FederationClient client: FederationClientType
} }
// eslint-disable-next-line @typescript-eslint/no-extraneous-class // eslint-disable-next-line @typescript-eslint/no-extraneous-class
export class Client { export class FederationClient {
private static instanceArray: ClientInstance[] = [] private static instanceArray: ClientInstance[] = []
/** /**
@ -30,9 +27,9 @@ export class Client {
private static createFederationClient = (dbCom: DbFederatedCommunity) => { private static createFederationClient = (dbCom: DbFederatedCommunity) => {
switch (dbCom.apiVersion) { switch (dbCom.apiVersion) {
case ApiVersionType.V1_0: case ApiVersionType.V1_0:
return new Client_1_0(dbCom) return new FederationClient_1_0(dbCom)
case ApiVersionType.V1_1: case ApiVersionType.V1_1:
return new Client_1_1(dbCom) return new FederationClient_1_1(dbCom)
default: default:
return null return null
} }
@ -44,14 +41,14 @@ export class Client {
* This implementation let you subclass the Singleton class while keeping * This implementation let you subclass the Singleton class while keeping
* just one instance of each subclass around. * just one instance of each subclass around.
*/ */
public static getInstance(dbCom: DbFederatedCommunity): FederationClient | null { public static getInstance(dbCom: DbFederatedCommunity): FederationClientType | null {
const instance = Client.instanceArray.find((instance) => instance.id === dbCom.id) const instance = FederationClient.instanceArray.find((instance) => instance.id === dbCom.id)
if (instance) { if (instance) {
return instance.client return instance.client
} }
const client = Client.createFederationClient(dbCom) const client = FederationClient.createFederationClient(dbCom)
if (client) { if (client) {
Client.instanceArray.push({ id: dbCom.id, client } as ClientInstance) FederationClient.instanceArray.push({ id: dbCom.id, client } as ClientInstance)
} }
return client return client
} }

View File

@ -4,8 +4,7 @@ import { GraphQLClient } from 'graphql-request'
import { getPublicKey } from '@/federation/query/getPublicKey' import { getPublicKey } from '@/federation/query/getPublicKey'
import { backendLogger as logger } from '@/server/logger' import { backendLogger as logger } from '@/server/logger'
// eslint-disable-next-line camelcase export class FederationClient_1_0 {
export class Client_1_0 {
dbCom: DbFederatedCommunity dbCom: DbFederatedCommunity
endpoint: string endpoint: string
client: GraphQLClient client: GraphQLClient

View File

@ -0,0 +1,3 @@
import { FederationClient_1_0 } from './FederationClient_1_0'
export class FederationClient_1_1 extends FederationClient_1_0 {}

View File

@ -70,6 +70,7 @@ describe('validate Communities', () => {
.into(DbFederatedCommunity) .into(DbFederatedCommunity)
.values(variables1) .values(variables1)
.orUpdate({ .orUpdate({
// eslint-disable-next-line camelcase
conflict_target: ['id', 'publicKey', 'apiVersion'], conflict_target: ['id', 'publicKey', 'apiVersion'],
overwrite: ['end_point', 'last_announced_at'], overwrite: ['end_point', 'last_announced_at'],
}) })
@ -102,6 +103,7 @@ describe('validate Communities', () => {
.into(DbFederatedCommunity) .into(DbFederatedCommunity)
.values(variables2) .values(variables2)
.orUpdate({ .orUpdate({
// eslint-disable-next-line camelcase
conflict_target: ['id', 'publicKey', 'apiVersion'], conflict_target: ['id', 'publicKey', 'apiVersion'],
overwrite: ['end_point', 'last_announced_at'], overwrite: ['end_point', 'last_announced_at'],
}) })
@ -140,6 +142,7 @@ describe('validate Communities', () => {
.into(DbFederatedCommunity) .into(DbFederatedCommunity)
.values(variables3) .values(variables3)
.orUpdate({ .orUpdate({
// eslint-disable-next-line camelcase
conflict_target: ['id', 'publicKey', 'apiVersion'], conflict_target: ['id', 'publicKey', 'apiVersion'],
overwrite: ['end_point', 'last_announced_at'], overwrite: ['end_point', 'last_announced_at'],
}) })

View File

@ -5,7 +5,7 @@ import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCom
import { backendLogger as logger } from '@/server/logger' import { backendLogger as logger } from '@/server/logger'
import { Client } from './client/Client' import { FederationClient } from './client/FederationClient'
import { ApiVersionType } from './enum/apiVersionType' import { ApiVersionType } from './enum/apiVersionType'
export function startValidateCommunities(timerInterval: number): void { export function startValidateCommunities(timerInterval: number): void {
@ -37,7 +37,7 @@ export async function validateCommunities(): Promise<void> {
continue continue
} }
try { try {
const client = Client.getInstance(dbCom) const client = FederationClient.getInstance(dbCom)
const pubKey = await client?.getPublicKey() const pubKey = await client?.getPublicKey()
if (pubKey && pubKey === dbCom.publicKey.toString()) { if (pubKey && pubKey === dbCom.publicKey.toString()) {
await DbFederatedCommunity.update({ id: dbCom.id }, { verifiedAt: new Date() }) await DbFederatedCommunity.update({ id: dbCom.id }, { verifiedAt: new Date() })