refactor: remove unsed code

This commit is contained in:
Abdalhamid Alhamad
2025-08-11 15:15:41 +03:00
parent cff87c4ecd
commit e8ee74d0d7
172 changed files with 177 additions and 10911 deletions
+1 -1
View File
@@ -1,3 +1,3 @@
export * from './device.entity';
export * from './user-registration-token.entity';
export * from './user-auth-token.entity';
export * from './user.entity';
@@ -0,0 +1,41 @@
import {
BaseEntity,
Column,
CreateDateColumn,
Entity,
Index,
JoinColumn,
ManyToOne,
PrimaryGeneratedColumn,
UpdateDateColumn,
} from 'typeorm';
import { User } from './user.entity';
@Entity('user_auth_tokens')
export class UserAuthToken extends BaseEntity {
@PrimaryGeneratedColumn('uuid')
id!: string;
@Column({ type: 'varchar', length: 255, name: 'token', unique: true })
@Index()
token!: string;
@Column({ type: 'boolean', default: false, name: 'is_used' })
isUsed!: boolean;
@Column({ type: 'timestamp with time zone', name: 'expiry_date' })
expiryDate!: Date;
@Column({ type: 'uuid', name: 'user_id', nullable: false })
userId!: string | null;
@ManyToOne(() => User, (user) => user.registrationTokens, { nullable: false, onDelete: 'CASCADE' })
@JoinColumn({ name: 'user_id' })
user!: User;
@UpdateDateColumn({ type: 'timestamp with time zone', default: () => 'CURRENT_TIMESTAMP', name: 'updated_at' })
updatedAt!: Date;
@CreateDateColumn({ type: 'timestamp with time zone', default: () => 'CURRENT_TIMESTAMP', name: 'created_at' })
createdAt!: Date;
}
@@ -1,53 +0,0 @@
import {
BaseEntity,
Column,
CreateDateColumn,
Entity,
Index,
JoinColumn,
ManyToOne,
PrimaryGeneratedColumn,
UpdateDateColumn,
} from 'typeorm';
import { Junior } from '~/junior/entities';
import { UserType } from '../enums';
import { User } from './user.entity';
@Entity('user_registration_tokens')
export class UserRegistrationToken extends BaseEntity {
@PrimaryGeneratedColumn('uuid')
id!: string;
@Column({ type: 'varchar', length: 255, name: 'token', unique: true })
@Index()
token!: string;
@Column({ type: 'varchar', length: 255, name: 'user_type' })
userType!: UserType;
@Column({ type: 'boolean', default: false, name: 'is_used' })
isUsed!: boolean;
@Column({ type: 'timestamp', name: 'expiry_date' })
expiryDate!: Date;
@Column({ type: 'uuid', name: 'user_id', nullable: true })
userId!: string | null;
@Column({ type: 'uuid', name: 'junior_id', nullable: true })
juniorId!: string | null;
@ManyToOne(() => User, (user) => user.registrationTokens, { nullable: true, onDelete: 'CASCADE' })
@JoinColumn({ name: 'user_id' })
user!: User;
@ManyToOne(() => Junior, (junior) => junior.registrationTokens, { nullable: true, onDelete: 'CASCADE' })
@JoinColumn({ name: 'junior_id' })
junior!: Junior;
@UpdateDateColumn({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP', name: 'updated_at' })
updatedAt!: Date;
@CreateDateColumn({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP', name: 'created_at' })
createdAt!: Date;
}
+3 -3
View File
@@ -14,7 +14,7 @@ import { Customer } from '~/customer/entities/customer.entity';
import { Document } from '~/document/entities';
import { Roles } from '../../auth/enums';
import { Device } from './device.entity';
import { UserRegistrationToken } from './user-registration-token.entity';
import { UserAuthToken } from './user-auth-token.entity';
@Entity('users')
export class User extends BaseEntity {
@@ -78,8 +78,8 @@ export class User extends BaseEntity {
@OneToMany(() => Document, (document) => document.createdBy)
createdDocuments!: Document[];
@OneToMany(() => UserRegistrationToken, (token) => token.user)
registrationTokens!: UserRegistrationToken[];
@OneToMany(() => UserAuthToken, (token) => token.user)
registrationTokens!: UserAuthToken[];
@CreateDateColumn({ name: 'created_at', type: 'timestamp with time zone' })
createdAt!: Date;
@@ -3,31 +3,29 @@ import { InjectRepository } from '@nestjs/typeorm';
import * as crypto from 'crypto';
import moment from 'moment';
import { Repository } from 'typeorm';
import { UserRegistrationToken } from '../entities';
import { UserAuthToken } from '../entities';
import { UserType } from '../enums';
const TOKEN_LENGTH = 16;
@Injectable()
export class UserTokenRepository {
constructor(
@InjectRepository(UserRegistrationToken)
private readonly userTokenRepository: Repository<UserRegistrationToken>,
@InjectRepository(UserAuthToken)
private readonly userTokenRepository: Repository<UserAuthToken>,
) {}
generateToken(userId: string, userType: UserType, expiryDate?: Date) {
generateToken(userId: string, expiryDate?: Date) {
return this.userTokenRepository.save(
this.userTokenRepository.create({
userId: userType === UserType.CHECKER ? userId : null,
juniorId: userType === UserType.JUNIOR ? userId : null,
userId,
expiryDate: expiryDate ?? moment().add('15', 'minutes').toDate(),
userType,
token: `${moment().unix()}-${crypto.randomBytes(TOKEN_LENGTH).toString('hex')}`,
}),
);
}
findByToken(token: string, userType: UserType) {
return this.userTokenRepository.findOne({ where: { token, isUsed: false, userType } });
return this.userTokenRepository.findOne({ where: { token, isUsed: false } });
}
invalidateToken(token: string) {
+3 -3
View File
@@ -7,9 +7,9 @@ export class UserTokenService {
constructor(private readonly userTokenRepository: UserTokenRepository) {}
private readonly logger = new Logger(UserTokenService.name);
async generateToken(userId: string, userType: UserType, expiryDate?: Date): Promise<string> {
async generateToken(userId: string, expiryDate?: Date): Promise<string> {
this.logger.log(`Generating token for user ${userId}`);
const tokenEntity = await this.userTokenRepository.generateToken(userId, userType, expiryDate);
const tokenEntity = await this.userTokenRepository.generateToken(userId, expiryDate);
this.logger.log(`Token generated successfully for junior ${userId}`);
return tokenEntity.token;
}
@@ -29,7 +29,7 @@ export class UserTokenService {
}
this.logger.log(`Token validated successfully`);
return tokenEntity.juniorId! || tokenEntity.userId!;
return tokenEntity.userId!;
}
invalidateToken(token: string) {
+1 -1
View File
@@ -154,7 +154,7 @@ export class UserService {
isProfileCompleted: true,
});
const ONE_DAY = moment().add(1, 'day').toDate();
const token = await this.userTokenService.generateToken(user.id, UserType.CHECKER, ONE_DAY);
const token = await this.userTokenService.generateToken(user.id, ONE_DAY);
await this.sendCheckerAccountCreatedEmail(data.email, token);
return user;
+2 -2
View File
@@ -3,13 +3,13 @@ import { TypeOrmModule } from '@nestjs/typeorm';
import { NotificationModule } from '~/common/modules/notification/notification.module';
import { CustomerModule } from '~/customer/customer.module';
import { AdminUserController, UserController } from './controllers';
import { Device, User, UserRegistrationToken } from './entities';
import { Device, User, UserAuthToken } from './entities';
import { DeviceRepository, UserRepository, UserTokenRepository } from './repositories';
import { DeviceService, UserService, UserTokenService } from './services';
@Module({
imports: [
TypeOrmModule.forFeature([User, Device, UserRegistrationToken]),
TypeOrmModule.forFeature([User, Device, UserAuthToken]),
forwardRef(() => NotificationModule),
forwardRef(() => CustomerModule),
],