From 689cb96b8712de8089d24d92f55ad86b0136deff Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Mon, 13 Nov 2023 17:58:45 +0100 Subject: [PATCH 1/3] replace mkdir and cp with npm modules to get platfrom independence --- backend/package.json | 6 ++++-- backend/yarn.lock | 12 +++++++++++- database/package.json | 6 ++++-- database/yarn.lock | 10 ++++++++++ 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/backend/package.json b/backend/package.json index b25a7dedb..8324932a3 100644 --- a/backend/package.json +++ b/backend/package.json @@ -8,7 +8,7 @@ "license": "Apache-2.0", "private": false, "scripts": { - "build": "tsc --build && mkdir -p build/src/emails/templates/ && cp -r src/emails/templates/* build/src/emails/templates/ && mkdir -p build/src/locales/ && cp -r src/locales/*.json build/src/locales/", + "build": "tsc --build && mkdirp build/src/emails/templates/ && ncp src/emails/templates build/src/emails/templates && mkdirp build/src/locales/ && ncp src/locales build/src/locales", "clean": "tsc --build --clean", "start": "cross-env TZ=UTC TS_NODE_BASEURL=./build node -r tsconfig-paths/register build/src/index.js", "dev": "cross-env TZ=UTC nodemon -w src --ext ts,pug,json,css --exec ts-node -r tsconfig-paths/register src/index.ts", @@ -80,7 +80,9 @@ "ts-jest": "^27.0.5", "ts-node": "^10.0.0", "tsconfig-paths": "^3.14.0", - "typescript": "^4.3.4" + "typescript": "^4.3.4", + "mkdirp": "^3.0.1", + "ncp": "^2.0.0" }, "nodemonConfig": { "ignore": [ diff --git a/backend/yarn.lock b/backend/yarn.lock index 84553d73e..0b3ceb323 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -3679,7 +3679,7 @@ graceful-fs@^4.1.6, graceful-fs@^4.2.0: integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== "gradido-database@file:../database": - version "1.22.0" + version "2.0.1" dependencies: "@types/uuid" "^8.3.4" cross-env "^7.0.3" @@ -5280,6 +5280,11 @@ mkdirp@^2.1.3: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.6.tgz#964fbcb12b2d8c5d6fbc62a963ac95a273e2cc19" integrity sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A== +mkdirp@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== + moo@^0.5.0, moo@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" @@ -5371,6 +5376,11 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +ncp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" + integrity sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA== + nearley@^2.20.1: version "2.20.1" resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.20.1.tgz#246cd33eff0d012faf197ff6774d7ac78acdd474" diff --git a/database/package.json b/database/package.json index 8916962be..12a6c758c 100644 --- a/database/package.json +++ b/database/package.json @@ -8,7 +8,7 @@ "license": "Apache-2.0", "private": false, "scripts": { - "build": "mkdir -p build/src/config/ && cp src/config/*.txt build/src/config/ && tsc --build", + "build": "mkdirp build/src/config/ && ncp src/config build/src/config && tsc --build", "clean": "tsc --build --clean", "up": "cross-env TZ=UTC node build/src/index.js up", "down": "cross-env TZ=UTC node build/src/index.js down", @@ -35,7 +35,9 @@ "eslint-plugin-security": "^1.7.1", "prettier": "^2.8.7", "ts-node": "^10.2.1", - "typescript": "^4.3.5" + "typescript": "^4.3.5", + "mkdirp": "^3.0.1", + "ncp": "^2.0.0" }, "dependencies": { "@types/uuid": "^8.3.4", diff --git a/database/yarn.lock b/database/yarn.lock index ac35e1eaa..d8a0d6ffb 100644 --- a/database/yarn.lock +++ b/database/yarn.lock @@ -1718,6 +1718,11 @@ mkdirp@^2.1.3: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.6.tgz#964fbcb12b2d8c5d6fbc62a963ac95a273e2cc19" integrity sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A== +mkdirp@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== + ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -1778,6 +1783,11 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +ncp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" + integrity sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA== + npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" From 1a61c396e3b17d65d02264c991127350102f9bc6 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Sat, 18 Nov 2023 14:40:14 +0100 Subject: [PATCH 2/3] add index to contribution_message.contribution_id --- backend/src/config/index.ts | 2 +- .../ContributionMessage.ts | 56 +++++++++++++++++++ database/entity/ContributionMessage.ts | 2 +- .../0075-contribution_message_add_index.ts | 15 +++++ dht-node/src/config/index.ts | 2 +- federation/src/config/index.ts | 2 +- 6 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 database/entity/0075-contribution_message_add_index/ContributionMessage.ts create mode 100644 database/migrations/0075-contribution_message_add_index.ts diff --git a/backend/src/config/index.ts b/backend/src/config/index.ts index 7ad0271ea..57afee4cf 100644 --- a/backend/src/config/index.ts +++ b/backend/src/config/index.ts @@ -12,7 +12,7 @@ Decimal.set({ }) const constants = { - DB_VERSION: '0074-insert_communityuuid in_existing_users', + DB_VERSION: '0075-contribution_message_add_index', 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/database/entity/0075-contribution_message_add_index/ContributionMessage.ts b/database/entity/0075-contribution_message_add_index/ContributionMessage.ts new file mode 100644 index 000000000..1c54ce5a0 --- /dev/null +++ b/database/entity/0075-contribution_message_add_index/ContributionMessage.ts @@ -0,0 +1,56 @@ +import { + BaseEntity, + Column, + DeleteDateColumn, + Entity, + Index, + JoinColumn, + ManyToOne, + PrimaryGeneratedColumn, +} from 'typeorm' +import { Contribution } from '../Contribution' +import { User } from '../User' + +@Entity('contribution_messages', { + engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci', +}) +export class ContributionMessage extends BaseEntity { + @PrimaryGeneratedColumn('increment', { unsigned: true }) + id: number + + @Column({ name: 'contribution_id', unsigned: true, nullable: false }) + contributionId: number + + @Index() + @ManyToOne(() => Contribution, (contribution) => contribution.messages) + @JoinColumn({ name: 'contribution_id' }) + contribution: Contribution + + @Column({ name: 'user_id', unsigned: true, nullable: false }) + userId: number + + @ManyToOne(() => User, (user) => user.messages) + @JoinColumn({ name: 'user_id' }) + user: User + + @Column({ length: 2000, nullable: false, collation: 'utf8mb4_unicode_ci' }) + message: string + + @Column({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP', name: 'created_at' }) + createdAt: Date + + @Column({ type: 'datetime', default: null, nullable: true, name: 'updated_at' }) + updatedAt: Date + + @DeleteDateColumn({ name: 'deleted_at' }) + deletedAt: Date | null + + @Column({ name: 'deleted_by', default: null, unsigned: true, nullable: true }) + deletedBy: number + + @Column({ length: 12, nullable: false, collation: 'utf8mb4_unicode_ci' }) + type: string + + @Column({ name: 'is_moderator', type: 'bool', nullable: false, default: false }) + isModerator: boolean +} diff --git a/database/entity/ContributionMessage.ts b/database/entity/ContributionMessage.ts index 8ba96e3f6..a5b370406 100644 --- a/database/entity/ContributionMessage.ts +++ b/database/entity/ContributionMessage.ts @@ -1 +1 @@ -export { ContributionMessage } from './0048-add_is_moderator_to_contribution_messages/ContributionMessage' +export { ContributionMessage } from './0075-contribution_message_add_index/ContributionMessage' diff --git a/database/migrations/0075-contribution_message_add_index.ts b/database/migrations/0075-contribution_message_add_index.ts new file mode 100644 index 000000000..6348d8e99 --- /dev/null +++ b/database/migrations/0075-contribution_message_add_index.ts @@ -0,0 +1,15 @@ +/* MIGRATION TO ADD PRIVATE KEY IN COMMUNITY TABLE + * + * This migration adds a field for the private key in the community.table + */ + +/* 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 `contribution_messages` ADD INDEX(`contribution_id`);') +} + +export async function downgrade(queryFn: (query: string, values?: any[]) => Promise>) { + await queryFn('ALTER TABLE `contribution_messages` DROP INDEX `contribution_id`') +} diff --git a/dht-node/src/config/index.ts b/dht-node/src/config/index.ts index 7aed88ccd..3faa608a5 100644 --- a/dht-node/src/config/index.ts +++ b/dht-node/src/config/index.ts @@ -4,7 +4,7 @@ import dotenv from 'dotenv' dotenv.config() const constants = { - DB_VERSION: '0074-insert_communityuuid in_existing_users', + DB_VERSION: '0075-contribution_message_add_index', 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 2770ada06..cedced566 100644 --- a/federation/src/config/index.ts +++ b/federation/src/config/index.ts @@ -10,7 +10,7 @@ Decimal.set({ }) const constants = { - DB_VERSION: '0074-insert_communityuuid in_existing_users', + DB_VERSION: '0075-contribution_message_add_index', 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 From 801669fafb45720b55143f48823f5d6c4586f0ed Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Sat, 18 Nov 2023 14:43:26 +0100 Subject: [PATCH 3/3] fix decorator position --- .../0075-contribution_message_add_index/ContributionMessage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/entity/0075-contribution_message_add_index/ContributionMessage.ts b/database/entity/0075-contribution_message_add_index/ContributionMessage.ts index 1c54ce5a0..dde11a0f9 100644 --- a/database/entity/0075-contribution_message_add_index/ContributionMessage.ts +++ b/database/entity/0075-contribution_message_add_index/ContributionMessage.ts @@ -18,10 +18,10 @@ export class ContributionMessage extends BaseEntity { @PrimaryGeneratedColumn('increment', { unsigned: true }) id: number + @Index() @Column({ name: 'contribution_id', unsigned: true, nullable: false }) contributionId: number - @Index() @ManyToOne(() => Contribution, (contribution) => contribution.messages) @JoinColumn({ name: 'contribution_id' }) contribution: Contribution