feat: extend master-data module with new preference and category entities and initialization script
This commit is contained in:
@@ -270,7 +270,12 @@ SELECT code, name, "tableName", description, "displayOrder", true FROM (VALUES
|
|||||||
('meal-type', 'Meal Type', 'tbl_meal_types', 'Meal Type master', 40),
|
('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),
|
('destination-type', 'Destination Type', 'tbl_destination_types', 'Destination Type master', 42),
|
||||||
('vehicle-category', 'Vehicle Category', 'tbl_vehicle_categories', 'Vehicle Category master', 43)
|
('vehicle-category', 'Vehicle Category', 'tbl_vehicle_categories', 'Vehicle Category master', 43),
|
||||||
|
('cabin-preference', 'Cabin Preference', 'tbl_cabin_preferences', 'Cabin Preference master', 44),
|
||||||
|
('airline-preference', 'Airline Preference', 'tbl_airline_preferences', 'Airline Preference master', 45),
|
||||||
|
('seat-type', 'Seat Type', 'tbl_seat_types', 'Seat Type master', 46),
|
||||||
|
('meal-category', 'Meal Category', 'tbl_meal_categories', 'Meal Category master', 47),
|
||||||
|
('seat-category', 'Seat Category', 'tbl_seat_categories', 'Seat Category master', 48)
|
||||||
) AS t(code, name, "tableName", description, "displayOrder")
|
) 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);
|
WHERE NOT EXISTS (SELECT 1 FROM masters.tbl_rules_categories WHERE masters.tbl_rules_categories.code = t.code);
|
||||||
|
|
||||||
@@ -320,7 +325,12 @@ FROM (VALUES
|
|||||||
('meal-type', 'tbl_meal_types'),
|
('meal-type', 'tbl_meal_types'),
|
||||||
('airport-restriction', 'tbl_airport_restrictions'),
|
('airport-restriction', 'tbl_airport_restrictions'),
|
||||||
('destination-type', 'tbl_destination_types'),
|
('destination-type', 'tbl_destination_types'),
|
||||||
('vehicle-category', 'tbl_vehicle_categories')
|
('vehicle-category', 'tbl_vehicle_categories'),
|
||||||
|
('cabin-preference', 'tbl_cabin_preferences'),
|
||||||
|
('airline-preference', 'tbl_airline_preferences'),
|
||||||
|
('seat-type', 'tbl_seat_types'),
|
||||||
|
('meal-category', 'tbl_meal_categories'),
|
||||||
|
('seat-category', 'tbl_seat_categories')
|
||||||
) AS v(code, "tableName")
|
) AS v(code, "tableName")
|
||||||
WHERE c.code = v.code AND (c."tableName" IS NULL OR c."tableName" != v."tableName");
|
WHERE c.code = v.code AND (c."tableName" IS NULL OR c."tableName" != v."tableName");
|
||||||
|
|
||||||
@@ -737,3 +747,51 @@ SELECT label, value, true FROM (VALUES
|
|||||||
('Premium Van', 'premium-van')
|
('Premium Van', 'premium-van')
|
||||||
) AS t(label, value)
|
) AS t(label, value)
|
||||||
WHERE NOT EXISTS (SELECT 1 FROM masters.tbl_vehicle_categories WHERE masters.tbl_vehicle_categories.value = t.value);
|
WHERE NOT EXISTS (SELECT 1 FROM masters.tbl_vehicle_categories WHERE masters.tbl_vehicle_categories.value = t.value);
|
||||||
|
|
||||||
|
-- 47. Cabin Preferences
|
||||||
|
INSERT INTO masters.tbl_cabin_preferences (label, value, "isActive")
|
||||||
|
SELECT label, value, true FROM (VALUES
|
||||||
|
('Same Cabin', 'same-cabin'),
|
||||||
|
('Upgrade if Available', 'upgrade-if-available'),
|
||||||
|
('Lowest Available', 'lowest-available')
|
||||||
|
) AS t(label, value)
|
||||||
|
WHERE NOT EXISTS (SELECT 1 FROM masters.tbl_cabin_preferences WHERE masters.tbl_cabin_preferences.value = t.value);
|
||||||
|
|
||||||
|
-- 48. Airline Preferences
|
||||||
|
INSERT INTO masters.tbl_airline_preferences (label, value, "isActive")
|
||||||
|
SELECT label, value, true FROM (VALUES
|
||||||
|
('Same Airline', 'same-airline'),
|
||||||
|
('Alliance Airline', 'alliance-airline'),
|
||||||
|
('Any Partner', 'any-partner')
|
||||||
|
) AS t(label, value)
|
||||||
|
WHERE NOT EXISTS (SELECT 1 FROM masters.tbl_airline_preferences WHERE masters.tbl_airline_preferences.value = t.value);
|
||||||
|
|
||||||
|
-- 49. Seat Types
|
||||||
|
INSERT INTO masters.tbl_seat_types (label, value, "isActive")
|
||||||
|
SELECT label, value, true FROM (VALUES
|
||||||
|
('Extra Legroom', 'extra-legroom'),
|
||||||
|
('Exit Row', 'exit-row'),
|
||||||
|
('Preferred', 'preferred'),
|
||||||
|
('Premium', 'premium')
|
||||||
|
) AS t(label, value)
|
||||||
|
WHERE NOT EXISTS (SELECT 1 FROM masters.tbl_seat_types WHERE masters.tbl_seat_types.value = t.value);
|
||||||
|
|
||||||
|
-- 50. Meal Categories
|
||||||
|
INSERT INTO masters.tbl_meal_categories (label, value, "isActive")
|
||||||
|
SELECT label, value, true FROM (VALUES
|
||||||
|
('Vegetarian', 'vegetarian'),
|
||||||
|
('Non-Vegetarian', 'non-vegetarian'),
|
||||||
|
('Vegan', 'vegan'),
|
||||||
|
('Child Meal', 'child-meal')
|
||||||
|
) AS t(label, value)
|
||||||
|
WHERE NOT EXISTS (SELECT 1 FROM masters.tbl_meal_categories WHERE masters.tbl_meal_categories.value = t.value);
|
||||||
|
|
||||||
|
-- 51. Seat Categories
|
||||||
|
INSERT INTO masters.tbl_seat_categories (label, value, "isActive")
|
||||||
|
SELECT label, value, true FROM (VALUES
|
||||||
|
('Standard', 'standard'),
|
||||||
|
('Preferred', 'preferred'),
|
||||||
|
('Exit Row', 'exit-row'),
|
||||||
|
('Extra Legroom', 'extra-legroom')
|
||||||
|
) AS t(label, value)
|
||||||
|
WHERE NOT EXISTS (SELECT 1 FROM masters.tbl_seat_categories WHERE masters.tbl_seat_categories.value = t.value);
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
} from 'typeorm';
|
||||||
|
|
||||||
|
@Entity({ name: 'tbl_airline_preferences', schema: 'masters' })
|
||||||
|
export class AirlinePreference {
|
||||||
|
@PrimaryGeneratedColumn('uuid')
|
||||||
|
id!: string;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
label!: string;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
value!: string;
|
||||||
|
|
||||||
|
@Column({ default: true })
|
||||||
|
isActive!: boolean;
|
||||||
|
|
||||||
|
@CreateDateColumn()
|
||||||
|
createdAt!: Date;
|
||||||
|
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updatedAt!: Date;
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
} from 'typeorm';
|
||||||
|
|
||||||
|
@Entity({ name: 'tbl_cabin_preferences', schema: 'masters' })
|
||||||
|
export class CabinPreference {
|
||||||
|
@PrimaryGeneratedColumn('uuid')
|
||||||
|
id!: string;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
label!: string;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
value!: string;
|
||||||
|
|
||||||
|
@Column({ default: true })
|
||||||
|
isActive!: boolean;
|
||||||
|
|
||||||
|
@CreateDateColumn()
|
||||||
|
createdAt!: Date;
|
||||||
|
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updatedAt!: Date;
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
} from 'typeorm';
|
||||||
|
|
||||||
|
@Entity({ name: 'tbl_meal_categories', schema: 'masters' })
|
||||||
|
export class MealCategory {
|
||||||
|
@PrimaryGeneratedColumn('uuid')
|
||||||
|
id!: string;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
label!: string;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
value!: string;
|
||||||
|
|
||||||
|
@Column({ default: true })
|
||||||
|
isActive!: boolean;
|
||||||
|
|
||||||
|
@CreateDateColumn()
|
||||||
|
createdAt!: Date;
|
||||||
|
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updatedAt!: Date;
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
} from 'typeorm';
|
||||||
|
|
||||||
|
@Entity({ name: 'tbl_seat_categories', schema: 'masters' })
|
||||||
|
export class SeatCategory {
|
||||||
|
@PrimaryGeneratedColumn('uuid')
|
||||||
|
id!: string;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
label!: string;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
value!: string;
|
||||||
|
|
||||||
|
@Column({ default: true })
|
||||||
|
isActive!: boolean;
|
||||||
|
|
||||||
|
@CreateDateColumn()
|
||||||
|
createdAt!: Date;
|
||||||
|
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updatedAt!: Date;
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
} from 'typeorm';
|
||||||
|
|
||||||
|
@Entity({ name: 'tbl_seat_types', schema: 'masters' })
|
||||||
|
export class SeatType {
|
||||||
|
@PrimaryGeneratedColumn('uuid')
|
||||||
|
id!: string;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
label!: string;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
value!: string;
|
||||||
|
|
||||||
|
@Column({ default: true })
|
||||||
|
isActive!: boolean;
|
||||||
|
|
||||||
|
@CreateDateColumn()
|
||||||
|
createdAt!: Date;
|
||||||
|
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updatedAt!: Date;
|
||||||
|
}
|
||||||
@@ -53,6 +53,11 @@ import { MealType } from './entities/meal-type.entity';
|
|||||||
import { AirportRestriction } from './entities/airport-restriction.entity';
|
import { AirportRestriction } from './entities/airport-restriction.entity';
|
||||||
import { DestinationType } from './entities/destination-type.entity';
|
import { DestinationType } from './entities/destination-type.entity';
|
||||||
import { VehicleCategory } from './entities/vehicle-category.entity';
|
import { VehicleCategory } from './entities/vehicle-category.entity';
|
||||||
|
import { CabinPreference } from './entities/cabin-preference.entity';
|
||||||
|
import { AirlinePreference } from './entities/airline-preference.entity';
|
||||||
|
import { SeatType } from './entities/seat-type.entity';
|
||||||
|
import { MealCategory } from './entities/meal-category.entity';
|
||||||
|
import { SeatCategory } from './entities/seat-category.entity';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
@@ -106,6 +111,11 @@ import { VehicleCategory } from './entities/vehicle-category.entity';
|
|||||||
AirportRestriction,
|
AirportRestriction,
|
||||||
DestinationType,
|
DestinationType,
|
||||||
VehicleCategory,
|
VehicleCategory,
|
||||||
|
CabinPreference,
|
||||||
|
AirlinePreference,
|
||||||
|
SeatType,
|
||||||
|
MealCategory,
|
||||||
|
SeatCategory,
|
||||||
]),
|
]),
|
||||||
],
|
],
|
||||||
controllers: [MasterDataController],
|
controllers: [MasterDataController],
|
||||||
|
|||||||
@@ -54,6 +54,11 @@ import { MealType } from './entities/meal-type.entity';
|
|||||||
import { AirportRestriction } from './entities/airport-restriction.entity';
|
import { AirportRestriction } from './entities/airport-restriction.entity';
|
||||||
import { DestinationType } from './entities/destination-type.entity';
|
import { DestinationType } from './entities/destination-type.entity';
|
||||||
import { VehicleCategory } from './entities/vehicle-category.entity';
|
import { VehicleCategory } from './entities/vehicle-category.entity';
|
||||||
|
import { CabinPreference } from './entities/cabin-preference.entity';
|
||||||
|
import { AirlinePreference } from './entities/airline-preference.entity';
|
||||||
|
import { SeatType } from './entities/seat-type.entity';
|
||||||
|
import { MealCategory } from './entities/meal-category.entity';
|
||||||
|
import { SeatCategory } from './entities/seat-category.entity';
|
||||||
|
|
||||||
import { CreateActionCategoryDto } from './dto/create-action-category.dto';
|
import { CreateActionCategoryDto } from './dto/create-action-category.dto';
|
||||||
import { UpdateActionCategoryDto } from './dto/update-action-category.dto';
|
import { UpdateActionCategoryDto } from './dto/update-action-category.dto';
|
||||||
@@ -119,6 +124,11 @@ export class MasterDataService implements OnModuleInit {
|
|||||||
@InjectRepository(AirportRestriction) private airportRestrictionRepo: Repository<AirportRestriction>,
|
@InjectRepository(AirportRestriction) private airportRestrictionRepo: Repository<AirportRestriction>,
|
||||||
@InjectRepository(DestinationType) private destinationTypeRepo: Repository<DestinationType>,
|
@InjectRepository(DestinationType) private destinationTypeRepo: Repository<DestinationType>,
|
||||||
@InjectRepository(VehicleCategory) private vehicleCategoryRepo: Repository<VehicleCategory>,
|
@InjectRepository(VehicleCategory) private vehicleCategoryRepo: Repository<VehicleCategory>,
|
||||||
|
@InjectRepository(CabinPreference) private cabinPreferenceRepo: Repository<CabinPreference>,
|
||||||
|
@InjectRepository(AirlinePreference) private airlinePreferenceRepo: Repository<AirlinePreference>,
|
||||||
|
@InjectRepository(SeatType) private seatTypeRepo: Repository<SeatType>,
|
||||||
|
@InjectRepository(MealCategory) private mealCategoryRepo: Repository<MealCategory>,
|
||||||
|
@InjectRepository(SeatCategory) private seatCategoryRepo: Repository<SeatCategory>,
|
||||||
) { }
|
) { }
|
||||||
|
|
||||||
private getRepositoryByCategory(category: string): Repository<any> {
|
private getRepositoryByCategory(category: string): Repository<any> {
|
||||||
@@ -315,6 +325,31 @@ export class MasterDataService implements OnModuleInit {
|
|||||||
case 'TBL_VEHICLE_CATEGORIES':
|
case 'TBL_VEHICLE_CATEGORIES':
|
||||||
return this.vehicleCategoryRepo;
|
return this.vehicleCategoryRepo;
|
||||||
|
|
||||||
|
case 'CABIN_PREFERENCE':
|
||||||
|
case 'CABIN_PREFERENCES':
|
||||||
|
case 'TBL_CABIN_PREFERENCES':
|
||||||
|
return this.cabinPreferenceRepo;
|
||||||
|
|
||||||
|
case 'AIRLINE_PREFERENCE':
|
||||||
|
case 'AIRLINE_PREFERENCES':
|
||||||
|
case 'TBL_AIRLINE_PREFERENCES':
|
||||||
|
return this.airlinePreferenceRepo;
|
||||||
|
|
||||||
|
case 'SEAT_TYPE':
|
||||||
|
case 'SEAT_TYPES':
|
||||||
|
case 'TBL_SEAT_TYPES':
|
||||||
|
return this.seatTypeRepo;
|
||||||
|
|
||||||
|
case 'MEAL_CATEGORY':
|
||||||
|
case 'MEAL_CATEGORIES':
|
||||||
|
case 'TBL_MEAL_CATEGORIES':
|
||||||
|
return this.mealCategoryRepo;
|
||||||
|
|
||||||
|
case 'SEAT_CATEGORY':
|
||||||
|
case 'SEAT_CATEGORIES':
|
||||||
|
case 'TBL_SEAT_CATEGORIES':
|
||||||
|
return this.seatCategoryRepo;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw new BadRequestException(`Invalid category: ${category}`);
|
throw new BadRequestException(`Invalid category: ${category}`);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user