From 7f529d8ae43ffc311d814026df51ef7653b090de Mon Sep 17 00:00:00 2001 From: azeeee05 Date: Mon, 10 Aug 2026 17:46:23 +0530 Subject: [PATCH] feat: implement VehicleCategory entity and master data module support --- database/seed-master-data.sql | 27 ++++++++++++++++-- .../entities/vehicle-category.entity.ts | 28 +++++++++++++++++++ src/modules/master-data/master-data.module.ts | 2 ++ .../master-data/master-data.service.ts | 7 +++++ 4 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 src/modules/master-data/entities/vehicle-category.entity.ts diff --git a/database/seed-master-data.sql b/database/seed-master-data.sql index ae0f89b..2b673c0 100644 --- a/database/seed-master-data.sql +++ b/database/seed-master-data.sql @@ -268,7 +268,9 @@ SELECT code, name, "tableName", description, "displayOrder", true FROM (VALUES ('eligible-fare-type', 'Eligible Fare Type', 'tbl_eligible_fare_types', 'Eligible Fare Type master', 38), ('applicable-product', 'Applicable Product', 'tbl_applicable_products', 'Applicable Product master', 39), ('meal-type', 'Meal Type', 'tbl_meal_types', 'Meal Type master', 40), - ('airport-restriction', 'Airport Restriction', 'tbl_airport_restrictions', 'Airport Restriction master', 41) + ('airport-restriction', 'Airport Restriction', 'tbl_airport_restrictions', 'Airport Restriction master', 41), + ('destination-type', 'Destination Type', 'tbl_destination_types', 'Destination Type master', 42), + ('vehicle-category', 'Vehicle Category', 'tbl_vehicle_categories', 'Vehicle Category master', 43) ) AS t(code, name, "tableName", description, "displayOrder") WHERE NOT EXISTS (SELECT 1 FROM masters.tbl_rules_categories WHERE masters.tbl_rules_categories.code = t.code); @@ -316,7 +318,9 @@ FROM (VALUES ('eligible-fare-type', 'tbl_eligible_fare_types'), ('applicable-product', 'tbl_applicable_products'), ('meal-type', 'tbl_meal_types'), - ('airport-restriction', 'tbl_airport_restrictions') + ('airport-restriction', 'tbl_airport_restrictions'), + ('destination-type', 'tbl_destination_types'), + ('vehicle-category', 'tbl_vehicle_categories') ) AS v(code, "tableName") WHERE c.code = v.code AND (c."tableName" IS NULL OR c."tableName" != v."tableName"); @@ -714,3 +718,22 @@ SELECT label, value, true FROM (VALUES ('Any Airport', 'any-airport') ) AS t(label, value) WHERE NOT EXISTS (SELECT 1 FROM masters.tbl_airport_restrictions WHERE masters.tbl_airport_restrictions.value = t.value); + +-- 45. Destination Types +INSERT INTO masters.tbl_destination_types (label, value, "isActive") +SELECT label, value, true FROM (VALUES + ('Home', 'home'), + ('Hotel', 'hotel'), + ('Airport', 'airport'), + ('City Center', 'city-center') +) AS t(label, value) +WHERE NOT EXISTS (SELECT 1 FROM masters.tbl_destination_types WHERE masters.tbl_destination_types.value = t.value); + +-- 46. Vehicle Categories +INSERT INTO masters.tbl_vehicle_categories (label, value, "isActive") +SELECT label, value, true FROM (VALUES + ('Executive Sedan', 'executive-sedan'), + ('Luxury SUV', 'luxury-suv'), + ('Premium Van', 'premium-van') +) AS t(label, value) +WHERE NOT EXISTS (SELECT 1 FROM masters.tbl_vehicle_categories WHERE masters.tbl_vehicle_categories.value = t.value); diff --git a/src/modules/master-data/entities/vehicle-category.entity.ts b/src/modules/master-data/entities/vehicle-category.entity.ts new file mode 100644 index 0000000..e4d79da --- /dev/null +++ b/src/modules/master-data/entities/vehicle-category.entity.ts @@ -0,0 +1,28 @@ +import { + Entity, + PrimaryGeneratedColumn, + Column, + CreateDateColumn, + UpdateDateColumn, +} from 'typeorm'; + +@Entity({ name: 'tbl_vehicle_categories', schema: 'masters' }) +export class VehicleCategory { + @PrimaryGeneratedColumn('uuid') + id!: string; + + @Column() + label!: string; + + @Column() + value!: string; + + @Column({ default: true }) + isActive!: boolean; + + @CreateDateColumn() + createdAt!: Date; + + @UpdateDateColumn() + updatedAt!: Date; +} diff --git a/src/modules/master-data/master-data.module.ts b/src/modules/master-data/master-data.module.ts index 21f87b9..0536d69 100644 --- a/src/modules/master-data/master-data.module.ts +++ b/src/modules/master-data/master-data.module.ts @@ -52,6 +52,7 @@ import { ApplicableProduct } from './entities/applicable-product.entity'; import { MealType } from './entities/meal-type.entity'; import { AirportRestriction } from './entities/airport-restriction.entity'; import { DestinationType } from './entities/destination-type.entity'; +import { VehicleCategory } from './entities/vehicle-category.entity'; @Module({ imports: [ @@ -104,6 +105,7 @@ import { DestinationType } from './entities/destination-type.entity'; MealType, AirportRestriction, DestinationType, + VehicleCategory, ]), ], controllers: [MasterDataController], diff --git a/src/modules/master-data/master-data.service.ts b/src/modules/master-data/master-data.service.ts index c3eaf0e..25e3608 100644 --- a/src/modules/master-data/master-data.service.ts +++ b/src/modules/master-data/master-data.service.ts @@ -53,6 +53,7 @@ import { ApplicableProduct } from './entities/applicable-product.entity'; import { MealType } from './entities/meal-type.entity'; import { AirportRestriction } from './entities/airport-restriction.entity'; import { DestinationType } from './entities/destination-type.entity'; +import { VehicleCategory } from './entities/vehicle-category.entity'; import { CreateActionCategoryDto } from './dto/create-action-category.dto'; import { UpdateActionCategoryDto } from './dto/update-action-category.dto'; @@ -117,6 +118,7 @@ export class MasterDataService implements OnModuleInit { @InjectRepository(MealType) private mealTypeRepo: Repository, @InjectRepository(AirportRestriction) private airportRestrictionRepo: Repository, @InjectRepository(DestinationType) private destinationTypeRepo: Repository, + @InjectRepository(VehicleCategory) private vehicleCategoryRepo: Repository, ) { } private getRepositoryByCategory(category: string): Repository { @@ -308,6 +310,11 @@ export class MasterDataService implements OnModuleInit { case 'TBL_DESTINATION_TYPES': return this.destinationTypeRepo; + case 'VEHICLE_CATEGORY': + case 'VEHICLE_CATEGORIES': + case 'TBL_VEHICLE_CATEGORIES': + return this.vehicleCategoryRepo; + default: throw new BadRequestException(`Invalid category: ${category}`); }