@kipicore/dbcore 1.1.156 → 1.1.157

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ export function up(queryInterface: any, Sequelize: any): Promise<void>;
2
+ export function down(queryInterface: any, Sequelize: any): Promise<void>;
@@ -0,0 +1,81 @@
1
+ 'use strict';
2
+ const up = async (queryInterface, Sequelize) => {
3
+ const table = await queryInterface.describeTable('drivers');
4
+ if (!table.profile_image) {
5
+ await queryInterface.addColumn('drivers', 'profile_image', {
6
+ type: Sequelize.UUID,
7
+ defaultValue: null,
8
+ allowNull: true,
9
+ field: 'profile_image',
10
+ });
11
+ }
12
+ if (!table.campus_id) {
13
+ await queryInterface.addColumn('drivers', 'campus_id', {
14
+ type: Sequelize.UUID,
15
+ defaultValue: null,
16
+ allowNull: true,
17
+ field: 'campus_id',
18
+ });
19
+ }
20
+ if (!table.mobile) {
21
+ await queryInterface.addColumn('drivers', 'mobile', {
22
+ type: Sequelize.STRING,
23
+ defaultValue: null,
24
+ allowNull: true,
25
+ field: 'mobile',
26
+ });
27
+ }
28
+ const vehicle = await queryInterface.describeTable('vehicles');
29
+ if (!vehicle.academic_calendar_id) {
30
+ await queryInterface.addColumn('vehicles', 'academic_calendar_id', {
31
+ type: Sequelize.UUID,
32
+ defaultValue: null,
33
+ allowNull: true,
34
+ field: 'academic_calendar_id',
35
+ });
36
+ }
37
+ if (!vehicle.user_id) {
38
+ await queryInterface.addColumn('vehicles', 'user_id', {
39
+ type: Sequelize.UUID,
40
+ defaultValue: null,
41
+ allowNull: true,
42
+ field: 'user_id',
43
+ });
44
+ }
45
+ const trips = await queryInterface.describeTable('trips');
46
+ if (!trips.slot_id) {
47
+ await queryInterface.addColumn('trips', 'slot_id', {
48
+ type: Sequelize.ARRAY(Sequelize.STRING),
49
+ defaultValue: [],
50
+ allowNull: true,
51
+ field: 'slot_id',
52
+ });
53
+ }
54
+ };
55
+ const down = async (queryInterface, Sequelize) => {
56
+ const drivers = await queryInterface.describeTable('drivers');
57
+ if (drivers.profile_image) {
58
+ await queryInterface.removeColumn('drivers', 'profile_image');
59
+ }
60
+ if (drivers.campus_id) {
61
+ await queryInterface.removeColumn('drivers', 'campus_id');
62
+ }
63
+ if (drivers.mobile) {
64
+ await queryInterface.removeColumn('drivers', 'mobile');
65
+ }
66
+ const vehicles = await queryInterface.describeTable('vehicles');
67
+ if (vehicles.academic_calendar_id) {
68
+ await queryInterface.removeColumn('vehicles', 'academic_calendar_id');
69
+ }
70
+ if (vehicles.user_id) {
71
+ await queryInterface.removeColumn('vehicles', 'user_id');
72
+ }
73
+ const trips = await queryInterface.describeTable('trips');
74
+ if (trips.slot_id) {
75
+ await queryInterface.removeColumn('trips', 'slot_id');
76
+ }
77
+ };
78
+ module.exports = {
79
+ up,
80
+ down,
81
+ };
@@ -0,0 +1 @@
1
+ export function up(queryInterface: any, Sequelize: any): Promise<void>;
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+ const up = async (queryInterface, Sequelize) => {
3
+ // Remove old index if exists
4
+ const oldIndexes = await queryInterface.showIndex('vehicles');
5
+ const hasOldIndex = oldIndexes.some(idx => idx.name === 'vehicle_unique_number');
6
+ if (hasOldIndex) {
7
+ await queryInterface.removeIndex('vehicles', 'vehicle_unique_number');
8
+ }
9
+ };
10
+ module.exports = {
11
+ up,
12
+ };
@@ -15,6 +15,9 @@ export interface IDriverModelAttributes extends IDefaultAttributes {
15
15
  aadharCardNumber: string;
16
16
  aadharCard: string;
17
17
  drivingLicenseNumber: string;
18
+ profileImage?: string;
19
+ campusId?: string;
20
+ mobile?: string;
18
21
  drivingLicense: string;
19
22
  appType?: APP_TYPE;
20
23
  status: COMMAN_STATUS;
@@ -6,6 +6,7 @@ export interface ITripModelAttributes extends IDefaultAttributes {
6
6
  vehicleId: string;
7
7
  driverId: string;
8
8
  shiftId: string[];
9
+ slotId: string[];
9
10
  area: string[];
10
11
  instituteId: string;
11
12
  departure: Date;
@@ -7,9 +7,15 @@ export interface IUserInstituteMetaSlots {
7
7
  presentStartTime: number;
8
8
  presentEndTime: number;
9
9
  }
10
+ export interface IUserTrip {
11
+ tripId: String;
12
+ pickUpNo: Number;
13
+ dropNo: Number;
14
+ }
10
15
  export interface IUserInstituteMetaAttributes extends IDefaultAttributes, Document {
11
16
  id: string;
12
17
  entities?: string[];
18
+ tripDetails?: IUserTrip[];
13
19
  additionalField?: object;
14
20
  userId: string;
15
21
  instituteId?: string;
@@ -8,4 +8,6 @@ export interface IVehicleModelAttributes extends IDefaultAttributes {
8
8
  capacity: number;
9
9
  rcBookFileId: string;
10
10
  instituteId: string;
11
+ academicCalendarId?: string;
12
+ userId: string;
11
13
  }
@@ -55,10 +55,19 @@ const userInstituteMetaSlotsSchema = new mongoose_1.Schema({
55
55
  required: false,
56
56
  },
57
57
  }, { _id: false });
58
+ const userTripSchema = new mongoose_1.Schema({
59
+ tripId: { type: String },
60
+ pickUpNo: { type: Number },
61
+ dropNo: { type: Number },
62
+ }, { _id: false });
58
63
  const userInstituteMetaSchema = new mongoose_1.Schema({
59
64
  entities: {
60
65
  type: [{ type: String }],
61
66
  },
67
+ tripDetails: {
68
+ type: [userTripSchema],
69
+ default: [],
70
+ },
62
71
  secondarySubject: {
63
72
  type: [{ type: String }],
64
73
  },
@@ -196,8 +205,8 @@ const userInstituteMetaSchema = new mongoose_1.Schema({
196
205
  },
197
206
  previousEntities: {
198
207
  type: [String],
199
- required: false
200
- }
208
+ required: false,
209
+ },
201
210
  }, {
202
211
  timestamps: true,
203
212
  versionKey: false,
@@ -10,6 +10,9 @@ export declare class DriverModel extends Model<IDriverModelAttributes, TDriverMo
10
10
  address1: string;
11
11
  address2?: string;
12
12
  pinCode: string;
13
+ profileImage?: string;
14
+ campusId?: string;
15
+ mobile?: string;
13
16
  city: number;
14
17
  state: number;
15
18
  country: number;
@@ -11,7 +11,7 @@ const instituteModel_1 = __importDefault(require("./instituteModel"));
11
11
  const errorMessages_1 = require("../../constants/errorMessages");
12
12
  class DriverModel extends sequelize_1.Model {
13
13
  static associate(models) {
14
- const { UserModel, InstituteModel, CountryModel, StateModel, CityModel, FileStorageModel } = models;
14
+ const { UserModel, InstituteModel, CountryModel, StateModel, CityModel, FileStorageModel, CampusModel } = models;
15
15
  DriverModel.belongsTo(UserModel, {
16
16
  foreignKey: { name: 'createdBy', allowNull: true, field: 'created_by' },
17
17
  as: 'createdByUser',
@@ -44,6 +44,10 @@ class DriverModel extends sequelize_1.Model {
44
44
  foreignKey: 'aadharCard',
45
45
  as: 'aadharCardDetails',
46
46
  });
47
+ DriverModel.belongsTo(FileStorageModel, {
48
+ foreignKey: 'profileImage',
49
+ as: 'drivingProfileImage',
50
+ });
47
51
  DriverModel.belongsTo(InstituteModel, {
48
52
  foreignKey: 'instituteId',
49
53
  as: 'driverInstitute',
@@ -52,6 +56,14 @@ class DriverModel extends sequelize_1.Model {
52
56
  foreignKey: 'instituteId',
53
57
  as: 'instituteHasDrivers',
54
58
  });
59
+ DriverModel.belongsTo(CampusModel, {
60
+ foreignKey: 'campusId',
61
+ as: 'driverCampus',
62
+ });
63
+ CampusModel.hasMany(DriverModel, {
64
+ foreignKey: 'campusId',
65
+ as: 'campusHasDrivers',
66
+ });
55
67
  }
56
68
  static addHooks() {
57
69
  const beforeCreateOrUpdateHook = async (driver) => {
@@ -122,6 +134,20 @@ DriverModel.init({
122
134
  type: sequelize_1.DataTypes.UUID,
123
135
  allowNull: true,
124
136
  },
137
+ profileImage: {
138
+ type: sequelize_1.DataTypes.UUID,
139
+ field: 'profile_image',
140
+ allowNull: true,
141
+ },
142
+ campusId: {
143
+ type: sequelize_1.DataTypes.UUID,
144
+ field: 'campus_id',
145
+ allowNull: true,
146
+ },
147
+ mobile: {
148
+ type: sequelize_1.DataTypes.STRING,
149
+ allowNull: true,
150
+ },
125
151
  drivingLicenseNumber: {
126
152
  type: sequelize_1.DataTypes.STRING,
127
153
  allowNull: true,
@@ -8,6 +8,7 @@ declare class TripModel extends Model<ITripModelAttributes, TTripModelCreationAt
8
8
  vehicleId: string;
9
9
  driverId: string;
10
10
  shiftId: string[];
11
+ slotId: string[];
11
12
  area: string[];
12
13
  instituteId: string;
13
14
  departure: Date;
@@ -91,6 +91,11 @@ TripModel.init({
91
91
  defaultValue: [],
92
92
  allowNull: true,
93
93
  },
94
+ slotId: {
95
+ type: sequelize_1.DataTypes.ARRAY(sequelize_1.DataTypes.UUID),
96
+ defaultValue: [],
97
+ allowNull: true,
98
+ },
94
99
  area: {
95
100
  type: sequelize_1.DataTypes.ARRAY(sequelize_1.DataTypes.STRING),
96
101
  defaultValue: [],
@@ -10,6 +10,8 @@ declare class VehicleModel extends Model<IVehicleModelAttributes, TVehicleModelC
10
10
  capacity: number;
11
11
  rcBookFileId: string;
12
12
  instituteId: string;
13
+ userId: string;
14
+ academicCalendarId: string;
13
15
  createdBy: string;
14
16
  updatedBy: string;
15
17
  deletedBy: string;
@@ -5,7 +5,7 @@ const index_1 = require("./index");
5
5
  const app_1 = require("../../constants/app");
6
6
  class VehicleModel extends sequelize_1.Model {
7
7
  static associate(models) {
8
- const { InstituteModel, FileStorageModel, UserModel } = models;
8
+ const { InstituteModel, FileStorageModel, UserModel, AcademicCalendarModel } = models;
9
9
  VehicleModel.belongsTo(InstituteModel, {
10
10
  foreignKey: { name: 'instituteId', field: 'institute_id' },
11
11
  as: 'vehicleInstitute',
@@ -14,6 +14,22 @@ class VehicleModel extends sequelize_1.Model {
14
14
  foreignKey: { name: 'instituteId', field: 'institute_id' },
15
15
  as: 'instituteVehicleList',
16
16
  });
17
+ VehicleModel.belongsTo(AcademicCalendarModel, {
18
+ foreignKey: { name: 'academicCalendarId', field: 'academic_calendar_id' },
19
+ as: 'vehicleAcademic',
20
+ });
21
+ AcademicCalendarModel.hasMany(VehicleModel, {
22
+ foreignKey: { name: 'academicCalendarId', field: 'academic_calendar_id' },
23
+ as: 'academicVehicleList',
24
+ });
25
+ VehicleModel.belongsTo(UserModel, {
26
+ foreignKey: { name: 'userId', field: 'user_id' },
27
+ as: 'vehicleUser',
28
+ });
29
+ UserModel.hasMany(VehicleModel, {
30
+ foreignKey: { name: 'userId', field: 'user_id' },
31
+ as: 'userVehicleList',
32
+ });
17
33
  VehicleModel.belongsTo(FileStorageModel, {
18
34
  foreignKey: { name: 'rcBookFileId', field: 'rc_book_file_id' },
19
35
  as: 'vehicleRcBookFile',
@@ -67,18 +83,20 @@ VehicleModel.init({
67
83
  field: 'institute_id',
68
84
  allowNull: false,
69
85
  },
86
+ userId: {
87
+ type: sequelize_1.DataTypes.UUID,
88
+ field: 'user_id',
89
+ allowNull: true,
90
+ },
91
+ academicCalendarId: {
92
+ type: sequelize_1.DataTypes.UUID,
93
+ field: 'academic_calendar_id',
94
+ allowNull: true,
95
+ },
70
96
  }, {
71
97
  modelName: 'VehicleModel',
72
98
  tableName: 'vehicles',
73
99
  timestamps: true,
74
- indexes: [
75
- {
76
- name: 'vehicle_unique_number',
77
- unique: true,
78
- fields: ['number', 'institute_id'],
79
- where: { deleted_at: null },
80
- },
81
- ],
82
100
  sequelize: index_1.sequelize,
83
101
  });
84
102
  exports.default = VehicleModel;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kipicore/dbcore",
3
- "version": "1.1.156",
3
+ "version": "1.1.157",
4
4
  "description": "Reusable DB core package with Postgres, MongoDB, models, services, interfaces, and types",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",