mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-28 16:00:56 +00:00
vehicle
This commit is contained in:
@@ -5,8 +5,8 @@ export class CreateDriversTable1775000000000 implements MigrationInterface {
|
||||
await queryRunner.query(`
|
||||
DO $$
|
||||
BEGIN
|
||||
DROP TABLE IF EXISTS freight.drivers CASCADE;
|
||||
CREATE TABLE freight.drivers (
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'drivers' AND table_schema = 'freight') THEN
|
||||
CREATE TABLE freight.drivers (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
license_number VARCHAR NOT NULL UNIQUE,
|
||||
first_name VARCHAR NOT NULL,
|
||||
@@ -27,10 +27,11 @@ export class CreateDriversTable1775000000000 implements MigrationInterface {
|
||||
deleted_at TIMESTAMP NULL
|
||||
);
|
||||
|
||||
CREATE INDEX idx_drivers_license_number ON freight.drivers(license_number);
|
||||
CREATE INDEX idx_drivers_email ON freight.drivers(email);
|
||||
CREATE INDEX idx_drivers_phone_number ON freight.drivers(phone_number);
|
||||
CREATE INDEX idx_drivers_status ON freight.drivers(status);
|
||||
CREATE INDEX idx_drivers_license_number ON freight.drivers(license_number);
|
||||
CREATE INDEX idx_drivers_email ON freight.drivers(email);
|
||||
CREATE INDEX idx_drivers_phone_number ON freight.drivers(phone_number);
|
||||
CREATE INDEX idx_drivers_status ON freight.drivers(status);
|
||||
END IF;
|
||||
END $$;
|
||||
`);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Entity, Column, Index } from 'typeorm';
|
||||
import { Entity, Column } from 'typeorm';
|
||||
import { BaseEntity } from '@edr/api-common';
|
||||
|
||||
export enum DriverStatus {
|
||||
@@ -9,48 +9,44 @@ export enum DriverStatus {
|
||||
}
|
||||
|
||||
@Entity({ name: 'drivers', schema: 'freight' })
|
||||
@Index(['licenseNumber'])
|
||||
@Index(['email'])
|
||||
@Index(['phoneNumber'])
|
||||
@Index(['status'])
|
||||
export class Driver extends BaseEntity {
|
||||
@Column({ unique: true })
|
||||
@Column({ name: 'license_number', unique: true })
|
||||
licenseNumber!: string;
|
||||
|
||||
@Column()
|
||||
@Column({ name: 'first_name' })
|
||||
firstName!: string;
|
||||
|
||||
@Column()
|
||||
@Column({ name: 'last_name' })
|
||||
lastName!: string;
|
||||
|
||||
@Column({ unique: true })
|
||||
email!: string;
|
||||
|
||||
@Column({ unique: true })
|
||||
@Column({ name: 'phone_number', unique: true })
|
||||
phoneNumber!: string;
|
||||
|
||||
@Column({ type: 'date' })
|
||||
@Column({ name: 'date_of_birth', type: 'date' })
|
||||
dateOfBirth!: Date;
|
||||
|
||||
@Column({ type: 'date' })
|
||||
@Column({ name: 'license_expiry_date', type: 'date' })
|
||||
licenseExpiryDate!: Date;
|
||||
|
||||
@Column({ type: 'varchar', default: DriverStatus.ACTIVE })
|
||||
status!: DriverStatus;
|
||||
|
||||
@Column({ type: 'varchar', array: true, nullable: true })
|
||||
@Column({ name: 'vehicle_types_authorized', type: 'varchar', array: true, nullable: true })
|
||||
vehicleTypesAuthorized?: string[];
|
||||
|
||||
@Column({ type: 'text', nullable: true })
|
||||
address!: string | null;
|
||||
|
||||
@Column({ type: 'varchar', nullable: true })
|
||||
@Column({ name: 'emergency_contact', type: 'varchar', nullable: true })
|
||||
emergencyContact!: string | null;
|
||||
|
||||
@Column({ type: 'text', nullable: true })
|
||||
notes!: string | null;
|
||||
|
||||
@Column({ type: 'int', default: 0 })
|
||||
@Column({ name: 'total_trips', type: 'int', default: 0 })
|
||||
totalTrips!: number;
|
||||
|
||||
@Column({ type: 'numeric', precision: 3, scale: 2, nullable: true })
|
||||
|
||||
Reference in New Issue
Block a user