From 7822c613eb6c2778c5c59a938b8afd5c3b3b7daa Mon Sep 17 00:00:00 2001 From: truthixify <124162045+truthixify@users.noreply.github.com> Date: Tue, 30 Sep 2025 01:38:21 +0100 Subject: [PATCH] Revert "implemented Asset Subcategory Module" --- backend/package-lock.json | 20 -------- backend/package.json | 1 - backend/src/app.module.ts | 23 +++++++-- .../asset-categories/asset-category.entity.ts | 8 ++-- .../asset-subcategories.controller.ts | 34 ------------- .../asset-subcategories.module.ts | 12 ----- .../asset-subcategories.service.ts | 48 ------------------- .../dto/create-asset-subcategory.dto.ts | 11 ----- .../dto/update-asset-subcategory.dto.ts | 7 --- .../entities/asset-subcategory.entity.ts | 14 ------ .../entities/inventory-item.entity.ts | 5 -- 11 files changed, 22 insertions(+), 161 deletions(-) delete mode 100644 backend/src/asset-subcategories/asset-subcategories.controller.ts delete mode 100644 backend/src/asset-subcategories/asset-subcategories.module.ts delete mode 100644 backend/src/asset-subcategories/asset-subcategories.service.ts delete mode 100644 backend/src/asset-subcategories/dto/create-asset-subcategory.dto.ts delete mode 100644 backend/src/asset-subcategories/dto/update-asset-subcategory.dto.ts delete mode 100644 backend/src/asset-subcategories/entities/asset-subcategory.entity.ts diff --git a/backend/package-lock.json b/backend/package-lock.json index 564371ea..141159c1 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -12,7 +12,6 @@ "@nestjs/common": "^10.0.0", "@nestjs/config": "^3.0.0", "@nestjs/core": "^10.0.0", - "@nestjs/mapped-types": "^2.1.0", "@nestjs/platform-express": "^10.0.0", "@nestjs/typeorm": "^10.0.0", "class-transformer": "^0.5.1", @@ -1687,25 +1686,6 @@ } } }, - "node_modules/@nestjs/mapped-types": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.1.0.tgz", - "integrity": "sha512-W+n+rM69XsFdwORF11UqJahn4J3xi4g/ZEOlJNL6KoW5ygWSmBB2p0S2BZ4FQeS/NDH72e6xIcu35SfJnE8bXw==", - "peerDependencies": { - "@nestjs/common": "^10.0.0 || ^11.0.0", - "class-transformer": "^0.4.0 || ^0.5.0", - "class-validator": "^0.13.0 || ^0.14.0", - "reflect-metadata": "^0.1.12 || ^0.2.0" - }, - "peerDependenciesMeta": { - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } - } - }, "node_modules/@nestjs/platform-express": { "version": "10.4.20", "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.4.20.tgz", diff --git a/backend/package.json b/backend/package.json index 72704001..4459e275 100644 --- a/backend/package.json +++ b/backend/package.json @@ -23,7 +23,6 @@ "@nestjs/common": "^10.0.0", "@nestjs/config": "^3.0.0", "@nestjs/core": "^10.0.0", - "@nestjs/mapped-types": "^2.1.0", "@nestjs/platform-express": "^10.0.0", "@nestjs/typeorm": "^10.0.0", "class-transformer": "^0.5.1", diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts index cccaa7d3..0c2a507f 100644 --- a/backend/src/app.module.ts +++ b/backend/src/app.module.ts @@ -7,8 +7,6 @@ import { AssetCategoriesModule } from './asset-categories/asset-categories.modul import { AssetCategory } from './asset-categories/asset-category.entity'; import { DepartmentsModule } from './departments/departments.module'; import { Department } from './departments/department.entity'; -import { AssetSubcategoriesModule } from './asset-subcategories/asset-subcategories.module'; -import { AssetSubcategory } from './asset-subcategories/entities/asset-subcategory.entity'; @Module({ imports: [ @@ -16,7 +14,23 @@ import { AssetSubcategory } from './asset-subcategories/entities/asset-subcatego isGlobal: true, }), TypeOrmModule.forRootAsync({ - imports: [ConfigModule], + imports: [ConfigModule, + // --- ADD THIS CONFIGURATION --- + I18nModule.forRoot({ + fallbackLanguage: 'en', + loaderOptions: { + path: path.join(__dirname, '/i18n/'), // Directory for translation files + watch: true, // Watch for changes in translation files + }, + resolvers: [ + // Order matters: checks query param, then header, then browser settings + new QueryResolver(['lang', 'l']), + new HeaderResolver(['x-custom-lang-header']), + AcceptLanguageResolver, // Standard 'Accept-Language' header + ], + }), + // --- END OF CONFIGURATION --- + ],], useFactory: (configService: ConfigService) => ({ type: 'postgres', host: configService.get('DB_HOST', 'localhost'), @@ -24,13 +38,12 @@ import { AssetSubcategory } from './asset-subcategories/entities/asset-subcatego username: configService.get('DB_USERNAME', 'postgres'), password: configService.get('DB_PASSWORD', 'password'), database: configService.get('DB_DATABASE', 'manage_assets'), - entities: [AssetCategory, AssetSubcategory, Department], + entities: [AssetCategory, Department], synchronize: configService.get('NODE_ENV') !== 'production', // Only for development }), inject: [ConfigService], }), AssetCategoriesModule, - AssetSubcategoriesModule, DepartmentsModule, ], controllers: [AppController], diff --git a/backend/src/asset-categories/asset-category.entity.ts b/backend/src/asset-categories/asset-category.entity.ts index 5908e9df..a6ff83df 100644 --- a/backend/src/asset-categories/asset-category.entity.ts +++ b/backend/src/asset-categories/asset-category.entity.ts @@ -1,5 +1,4 @@ import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, OneToMany } from 'typeorm'; -import { AssetSubcategory } from '../asset-subcategories/entities/asset-subcategory.entity'; @Entity('asset_categories') export class AssetCategory { @@ -18,7 +17,8 @@ export class AssetCategory { @UpdateDateColumn() updatedAt: Date; - // Relationship with subcategories - @OneToMany(() => AssetSubcategory, subcategory => subcategory.parentCategory) - subcategories: AssetSubcategory[]; + // Relationship with assets (one-to-many) + // This will be uncommented when the Asset entity is created + // @OneToMany(() => Asset, asset => asset.category) + // assets: Asset[]; } diff --git a/backend/src/asset-subcategories/asset-subcategories.controller.ts b/backend/src/asset-subcategories/asset-subcategories.controller.ts deleted file mode 100644 index bcd7c3c4..00000000 --- a/backend/src/asset-subcategories/asset-subcategories.controller.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Controller, Get, Post, Body, Param, Patch, Delete } from '@nestjs/common'; -import { AssetSubcategoriesService } from './asset-subcategories.service'; -import { CreateAssetSubcategoryDto } from './dto/create-asset-subcategory.dto'; -import { UpdateAssetSubcategoryDto } from './dto/update-asset-subcategory.dto'; - -@Controller('asset-subcategories') -export class AssetSubcategoriesController { - constructor(private readonly service: AssetSubcategoriesService) {} - - @Post() - create(@Body() dto: CreateAssetSubcategoryDto) { - return this.service.create(dto); - } - - @Get() - findAll() { - return this.service.findAll(); - } - - @Get(':id') - findOne(@Param('id') id: string) { - return this.service.findOne(Number(id)); - } - - @Patch(':id') - update(@Param('id') id: string, @Body() dto: UpdateAssetSubcategoryDto) { - return this.service.update(Number(id), dto); - } - - @Delete(':id') - remove(@Param('id') id: string) { - return this.service.remove(Number(id)); - } -} diff --git a/backend/src/asset-subcategories/asset-subcategories.module.ts b/backend/src/asset-subcategories/asset-subcategories.module.ts deleted file mode 100644 index 25a15990..00000000 --- a/backend/src/asset-subcategories/asset-subcategories.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Module } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; -import { AssetSubcategory } from './entities/asset-subcategory.entity'; -import { AssetSubcategoriesService } from './asset-subcategories.service'; -import { AssetSubcategoriesController } from './asset-subcategories.controller'; - -@Module({ - imports: [TypeOrmModule.forFeature([AssetSubcategory])], - providers: [AssetSubcategoriesService], - controllers: [AssetSubcategoriesController], -}) -export class AssetSubcategoriesModule {} diff --git a/backend/src/asset-subcategories/asset-subcategories.service.ts b/backend/src/asset-subcategories/asset-subcategories.service.ts deleted file mode 100644 index 7c2ac2a3..00000000 --- a/backend/src/asset-subcategories/asset-subcategories.service.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { Injectable, NotFoundException } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; -import { Repository } from 'typeorm'; -import { AssetSubcategory } from './entities/asset-subcategory.entity'; -import { CreateAssetSubcategoryDto } from './dto/create-asset-subcategory.dto'; -import { UpdateAssetSubcategoryDto } from './dto/update-asset-subcategory.dto'; -import { AssetCategory } from '../asset-categories/asset-category.entity'; - -@Injectable() -export class AssetSubcategoriesService { - constructor( - @InjectRepository(AssetSubcategory) - private readonly subcategoryRepo: Repository, - @InjectRepository(AssetCategory) - private readonly categoryRepo: Repository, - ) {} - - async create(dto: CreateAssetSubcategoryDto): Promise { - const parentCategory = await this.categoryRepo.findOne({ where: { id: dto.parentCategoryId } }); - if (!parentCategory) throw new NotFoundException('Parent category not found'); - const subcategory = this.subcategoryRepo.create({ ...dto, parentCategory }); - return this.subcategoryRepo.save(subcategory); - } - - findAll(): Promise { - return this.subcategoryRepo.find({ relations: ['parentCategory'] }); - } - - findOne(id: number): Promise { - return this.subcategoryRepo.findOne({ where: { id }, relations: ['parentCategory'] }); - } - - async update(id: number, dto: UpdateAssetSubcategoryDto): Promise { - const subcategory = await this.subcategoryRepo.findOne({ where: { id } }); - if (!subcategory) throw new NotFoundException('Subcategory not found'); - if (dto.parentCategoryId) { - const parentCategory = await this.categoryRepo.findOne({ where: { id: dto.parentCategoryId } }); - if (!parentCategory) throw new NotFoundException('Parent category not found'); - subcategory.parentCategory = parentCategory; - } - if (dto.name) subcategory.name = dto.name; - return this.subcategoryRepo.save(subcategory); - } - - async remove(id: number): Promise { - await this.subcategoryRepo.delete(id); - } -} diff --git a/backend/src/asset-subcategories/dto/create-asset-subcategory.dto.ts b/backend/src/asset-subcategories/dto/create-asset-subcategory.dto.ts deleted file mode 100644 index ae26bf01..00000000 --- a/backend/src/asset-subcategories/dto/create-asset-subcategory.dto.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { IsInt, IsNotEmpty, IsString } from 'class-validator'; - -export class CreateAssetSubcategoryDto { - @IsNotEmpty() - @IsString() - name: string; - - @IsNotEmpty() - @IsInt() - parentCategoryId: number; -} diff --git a/backend/src/asset-subcategories/dto/update-asset-subcategory.dto.ts b/backend/src/asset-subcategories/dto/update-asset-subcategory.dto.ts deleted file mode 100644 index 806121f9..00000000 --- a/backend/src/asset-subcategories/dto/update-asset-subcategory.dto.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { PartialType } from '@nestjs/mapped-types'; -import { CreateAssetSubcategoryDto } from './create-asset-subcategory.dto'; - -export class UpdateAssetSubcategoryDto extends PartialType(CreateAssetSubcategoryDto) { - name?: string; - parentCategoryId?: number; -} diff --git a/backend/src/asset-subcategories/entities/asset-subcategory.entity.ts b/backend/src/asset-subcategories/entities/asset-subcategory.entity.ts deleted file mode 100644 index 9931563b..00000000 --- a/backend/src/asset-subcategories/entities/asset-subcategory.entity.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm'; -import { AssetCategory } from '../../asset-categories/asset-category.entity'; - -@Entity('asset_subcategories') -export class AssetSubcategory { - @PrimaryGeneratedColumn() - id: number; - - @Column() - name: string; - - @ManyToOne(() => AssetCategory, category => category.subcategories, { nullable: false }) - parentCategory: AssetCategory; -} diff --git a/backend/src/inventory/entities/inventory-item.entity.ts b/backend/src/inventory/entities/inventory-item.entity.ts index 6973891f..79a45875 100644 --- a/backend/src/inventory/entities/inventory-item.entity.ts +++ b/backend/src/inventory/entities/inventory-item.entity.ts @@ -1,6 +1,4 @@ import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm'; -import { ManyToOne } from 'typeorm'; -import { AssetSubcategory } from '../../asset-subcategories/entities/asset-subcategory.entity'; @Entity() export class InventoryItem { @@ -19,7 +17,4 @@ export class InventoryItem { // --- ADD THIS NEW FIELD --- @Column({ type: 'int', default: 10 }) // Default threshold of 10 units threshold: number; - - @ManyToOne(() => AssetSubcategory, { nullable: true }) - subcategory: AssetSubcategory; } \ No newline at end of file