From 55a2a6ac30a5af96507373e7683dae9e92d77125 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Wed, 21 May 2025 14:30:02 +0200 Subject: [PATCH] add precision=3 to datetime where it is used, remove unused entities, add migration for dropping unused table --- database/entity/AdminPendingCreation.ts | 33 ------------------- database/entity/Community.ts | 6 ++-- database/entity/DltTransaction.ts | 3 +- database/entity/Event.ts | 1 + database/entity/FederatedCommunity.ts | 8 +++-- database/entity/LoginEmailOptIn.ts | 26 --------------- database/entity/PendingTransaction.ts | 4 ++- database/entity/Transaction.ts | 6 ++-- database/entity/User.ts | 11 +++++-- database/entity/UserContact.ts | 4 ++- database/entity/UserRole.ts | 3 +- database/entity/index.ts | 3 -- .../migrations/0090-drop_unused_tables.ts | 19 +++++++++++ 13 files changed, 52 insertions(+), 75 deletions(-) delete mode 100644 database/entity/AdminPendingCreation.ts delete mode 100644 database/entity/LoginEmailOptIn.ts create mode 100644 database/migrations/0090-drop_unused_tables.ts diff --git a/database/entity/AdminPendingCreation.ts b/database/entity/AdminPendingCreation.ts deleted file mode 100644 index 0a03ce4a0..000000000 --- a/database/entity/AdminPendingCreation.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Decimal } from 'decimal.js-light' -import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from 'typeorm' -import { DecimalTransformer } from '../src/typeorm/DecimalTransformer' - -@Entity('admin_pending_creations') -export class AdminPendingCreation extends BaseEntity { - @PrimaryGeneratedColumn('increment', { unsigned: true }) - id: number - - @Column({ type: 'bigint', unsigned: true, nullable: false }) - userId: number - - @Column({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP' }) - created: Date - - @Column({ type: 'datetime', nullable: false }) - date: Date - - @Column({ type: 'varchar', length: 255, nullable: false, collation: 'utf8mb4_unicode_ci' }) - memo: string - - @Column({ - type: 'decimal', - precision: 40, - scale: 20, - nullable: false, - transformer: DecimalTransformer, - }) - amount: Decimal - - @Column() - moderator: number -} diff --git a/database/entity/Community.ts b/database/entity/Community.ts index 91efc0781..fde1f0df0 100644 --- a/database/entity/Community.ts +++ b/database/entity/Community.ts @@ -39,7 +39,7 @@ export class Community extends BaseEntity { }) communityUuid: string | null - @Column({ name: 'authenticated_at', type: 'datetime', nullable: true }) + @Column({ name: 'authenticated_at', type: 'datetime', precision: 3, nullable: true }) authenticatedAt: Date | null @Column({ name: 'name', type: 'varchar', length: 40, nullable: true }) @@ -48,7 +48,7 @@ export class Community extends BaseEntity { @Column({ name: 'description', type: 'varchar', length: 255, nullable: true }) description: string | null - @CreateDateColumn({ name: 'creation_date', type: 'datetime', nullable: true }) + @CreateDateColumn({ name: 'creation_date', type: 'datetime', precision: 3, nullable: true }) creationDate: Date | null @Column({ name: 'gms_api_key', type: 'varchar', length: 512, nullable: true, default: null }) @@ -66,6 +66,7 @@ export class Community extends BaseEntity { @CreateDateColumn({ name: 'created_at', type: 'datetime', + precision: 3, default: () => 'CURRENT_TIMESTAMP(3)', nullable: false, }) @@ -74,6 +75,7 @@ export class Community extends BaseEntity { @UpdateDateColumn({ name: 'updated_at', type: 'datetime', + precision: 3, onUpdate: 'CURRENT_TIMESTAMP(3)', nullable: true, }) diff --git a/database/entity/DltTransaction.ts b/database/entity/DltTransaction.ts index 7e70402ba..3a065e505 100644 --- a/database/entity/DltTransaction.ts +++ b/database/entity/DltTransaction.ts @@ -25,12 +25,13 @@ export class DltTransaction extends BaseEntity { @Column({ name: 'created_at', type: 'datetime', + precision: 3, default: () => 'CURRENT_TIMESTAMP(3)', nullable: false, }) createdAt: Date - @Column({ name: 'verified_at', type: 'datetime', nullable: true, default: null }) + @Column({ name: 'verified_at', type: 'datetime', precision: 3, nullable: true, default: null }) verifiedAt: Date | null @OneToOne( diff --git a/database/entity/Event.ts b/database/entity/Event.ts index eb56e7e5a..868ddaf60 100644 --- a/database/entity/Event.ts +++ b/database/entity/Event.ts @@ -27,6 +27,7 @@ export class Event extends BaseEntity { @CreateDateColumn({ name: 'created_at', type: 'datetime', + precision: 3, default: () => 'CURRENT_TIMESTAMP(3)', nullable: false, }) diff --git a/database/entity/FederatedCommunity.ts b/database/entity/FederatedCommunity.ts index 09c493073..a6eaee80f 100644 --- a/database/entity/FederatedCommunity.ts +++ b/database/entity/FederatedCommunity.ts @@ -27,18 +27,19 @@ export class FederatedCommunity extends BaseEntity { @Column({ name: 'end_point', type: 'varchar', length: 255, nullable: false }) endPoint: string - @Column({ name: 'last_announced_at', type: 'datetime', nullable: true }) + @Column({ name: 'last_announced_at', type: 'datetime', precision: 3, nullable: true }) lastAnnouncedAt: Date | null - @Column({ name: 'verified_at', type: 'datetime', nullable: true }) + @Column({ name: 'verified_at', type: 'datetime', precision: 3, nullable: true }) verifiedAt: Date | null - @Column({ name: 'last_error_at', type: 'datetime', nullable: true }) + @Column({ name: 'last_error_at', type: 'datetime', precision: 3, nullable: true }) lastErrorAt: Date | null @CreateDateColumn({ name: 'created_at', type: 'datetime', + precision: 3, default: () => 'CURRENT_TIMESTAMP(3)', nullable: false, }) @@ -47,6 +48,7 @@ export class FederatedCommunity extends BaseEntity { @UpdateDateColumn({ name: 'updated_at', type: 'datetime', + precision: 3, onUpdate: 'CURRENT_TIMESTAMP(3)', nullable: true, }) diff --git a/database/entity/LoginEmailOptIn.ts b/database/entity/LoginEmailOptIn.ts deleted file mode 100644 index 46f74e7de..000000000 --- a/database/entity/LoginEmailOptIn.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from 'typeorm' - -// Moriz: I do not like the idea of having two user tables -@Entity('login_email_opt_in') -export class LoginEmailOptIn extends BaseEntity { - @PrimaryGeneratedColumn('increment', { unsigned: true }) - id: number - - @Column({ name: 'user_id', type: 'bigint', unsigned: true, nullable: false }) - userId: number - - @Column({ name: 'verification_code', type: 'bigint', unsigned: true, unique: true }) - verificationCode: BigInt - - @Column({ name: 'email_opt_in_type_id', type: 'int', unsigned: true, nullable: false }) - emailOptInTypeId: number - - @Column({ name: 'created', type: 'datetime', default: () => 'CURRENT_TIMESTAMP' }) - createdAt: Date - - @Column({ name: 'resend_count', type: 'int', unsigned: true, default: 0 }) - resendCount: number - - @Column({ name: 'updated', type: 'datetime', default: () => 'CURRENT_TIMESTAMP' }) - updatedAt: Date -} diff --git a/database/entity/PendingTransaction.ts b/database/entity/PendingTransaction.ts index a3574077a..5281e38ff 100644 --- a/database/entity/PendingTransaction.ts +++ b/database/entity/PendingTransaction.ts @@ -47,6 +47,7 @@ export class PendingTransaction extends BaseEntity { @Column({ name: 'balance_date', type: 'datetime', + precision: 3, default: () => 'CURRENT_TIMESTAMP(3)', nullable: false, }) @@ -64,6 +65,7 @@ export class PendingTransaction extends BaseEntity { @Column({ name: 'decay_start', type: 'datetime', + precision: 3, nullable: true, default: null, }) @@ -72,7 +74,7 @@ export class PendingTransaction extends BaseEntity { @Column({ type: 'varchar', length: 255, nullable: false, collation: 'utf8mb4_unicode_ci' }) memo: string - @Column({ name: 'creation_date', type: 'datetime', nullable: true, default: null }) + @Column({ name: 'creation_date', type: 'datetime', precision: 3, nullable: true, default: null }) creationDate: Date | null @Column({ name: 'user_id', type: 'bigint', unsigned: true, nullable: false }) diff --git a/database/entity/Transaction.ts b/database/entity/Transaction.ts index 64ae2c073..196005ef6 100644 --- a/database/entity/Transaction.ts +++ b/database/entity/Transaction.ts @@ -46,7 +46,8 @@ export class Transaction extends BaseEntity { @Column({ name: 'balance_date', type: 'datetime', - default: () => 'CURRENT_TIMESTAMP', + precision: 3, + default: () => 'CURRENT_TIMESTAMP(3)', nullable: false, }) balanceDate: Date @@ -63,6 +64,7 @@ export class Transaction extends BaseEntity { @Column({ name: 'decay_start', type: 'datetime', + precision: 3, nullable: true, default: null, }) @@ -71,7 +73,7 @@ export class Transaction extends BaseEntity { @Column({ type: 'varchar', length: 255, nullable: false, collation: 'utf8mb4_unicode_ci' }) memo: string - @Column({ name: 'creation_date', type: 'datetime', nullable: true, default: null }) + @Column({ name: 'creation_date', type: 'datetime', precision: 3, nullable: true, default: null }) creationDate: Date | null @Column({ name: 'user_id', type: 'bigint', unsigned: true, nullable: false }) diff --git a/database/entity/User.ts b/database/entity/User.ts index c03b43ffb..9ff7d50f8 100644 --- a/database/entity/User.ts +++ b/database/entity/User.ts @@ -99,12 +99,13 @@ export class User extends BaseEntity { @Column({ name: 'created_at', type: 'datetime', + precision: 3, default: () => 'CURRENT_TIMESTAMP(3)', nullable: false, }) createdAt: Date - @DeleteDateColumn({ name: 'deleted_at', type: 'datetime', nullable: true }) + @DeleteDateColumn({ name: 'deleted_at', type: 'datetime', precision: 3, nullable: true }) deletedAt: Date | null @Column({ type: 'bigint', default: 0, unsigned: true }) @@ -180,7 +181,13 @@ export class User extends BaseEntity { @Column({ name: 'gms_registered', type: 'bool', default: false }) gmsRegistered: boolean - @Column({ name: 'gms_registered_at', type: 'datetime', default: null, nullable: true }) + @Column({ + name: 'gms_registered_at', + type: 'datetime', + precision: 3, + default: null, + nullable: true, + }) gmsRegisteredAt: Date | null @Column({ name: 'humhub_allowed', type: 'bool', default: false }) diff --git a/database/entity/UserContact.ts b/database/entity/UserContact.ts index a4453581f..6af26ea39 100644 --- a/database/entity/UserContact.ts +++ b/database/entity/UserContact.ts @@ -94,6 +94,7 @@ export class UserContact extends BaseEntity { @CreateDateColumn({ name: 'created_at', + precision: 3, default: () => 'CURRENT_TIMESTAMP(3)', nullable: false, }) @@ -101,11 +102,12 @@ export class UserContact extends BaseEntity { @UpdateDateColumn({ name: 'updated_at', + precision: 3, nullable: true, onUpdate: 'CURRENT_TIMESTAMP(3)', }) updatedAt: Date | null - @DeleteDateColumn({ name: 'deleted_at', nullable: true }) + @DeleteDateColumn({ name: 'deleted_at', precision: 3, nullable: true }) deletedAt: Date | null } diff --git a/database/entity/UserRole.ts b/database/entity/UserRole.ts index 8a6c4aee1..e063fc66e 100644 --- a/database/entity/UserRole.ts +++ b/database/entity/UserRole.ts @@ -15,12 +15,13 @@ export class UserRole extends BaseEntity { @Column({ name: 'created_at', type: 'datetime', + precision: 3, default: () => 'CURRENT_TIMESTAMP(3)', nullable: false, }) createdAt: Date - @Column({ name: 'updated_at', type: 'datetime', nullable: true, default: null }) + @Column({ name: 'updated_at', type: 'datetime', precision: 3, nullable: true, default: null }) updatedAt: Date | null @ManyToOne( diff --git a/database/entity/index.ts b/database/entity/index.ts index 71329b6ee..b6ecd8f6c 100644 --- a/database/entity/index.ts +++ b/database/entity/index.ts @@ -7,7 +7,6 @@ import { DltTransaction } from './DltTransaction' import { Event } from './Event' import { FederatedCommunity } from './FederatedCommunity' import { LoginElopageBuys } from './LoginElopageBuys' -import { LoginEmailOptIn } from './LoginEmailOptIn' import { Migration } from './Migration' import { OpenaiThreads } from './OpenaiThreads' import { PendingTransaction } from './PendingTransaction' @@ -27,7 +26,6 @@ export { Event, FederatedCommunity, LoginElopageBuys, - LoginEmailOptIn, Migration, ProjectBranding, OpenaiThreads, @@ -50,7 +48,6 @@ export const entities = [ Event, FederatedCommunity, LoginElopageBuys, - LoginEmailOptIn, Migration, ProjectBranding, OpenaiThreads, diff --git a/database/migrations/0090-drop_unused_tables.ts b/database/migrations/0090-drop_unused_tables.ts new file mode 100644 index 000000000..f44be5f57 --- /dev/null +++ b/database/migrations/0090-drop_unused_tables.ts @@ -0,0 +1,19 @@ +export async function upgrade(queryFn: (query: string, values?: any[]) => Promise>) { + await queryFn(`DROP TABLE login_email_opt_in;`) +} + +export async function downgrade(queryFn: (query: string, values?: any[]) => Promise>) { + await queryFn(` + CREATE TABLE IF NOT EXISTS \`login_email_opt_in\` ( + \`id\` int(10) unsigned NOT NULL AUTO_INCREMENT, + \`user_id\` int(11) NOT NULL, + \`verification_code\` bigint(20) unsigned NOT NULL, + \`email_opt_in_type_id\` int(11) NOT NULL, + \`created\` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + \`resend_count\` int(11) DEFAULT '0', + \`updated\` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (\`id\`), + UNIQUE KEY \`verification_code\` (\`verification_code\`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + `) +}