[MCH-BE] feat: Add missing delivery entities (driver, status_history)
- Created driver.entity.ts with DriverStatus enum - Created delivery-status-history.entity.ts with Delivery relation - Updated delivery.module.ts imports for TypeOrmModule Resolves: TASK-2026-01-20-002 audit P0 gap Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
b3eaebb54c
commit
db34a3ddf2
@ -4,9 +4,11 @@ import { DeliveryController } from './delivery.controller';
|
||||
import { DeliveryService } from './delivery.service';
|
||||
import { Delivery } from './entities/delivery.entity';
|
||||
import { DeliveryZone } from './entities/delivery-zone.entity';
|
||||
import { DeliveryStatusHistory } from './entities/delivery-status-history.entity';
|
||||
import { Driver } from './entities/driver.entity';
|
||||
|
||||
@Module({
|
||||
imports: [TypeOrmModule.forFeature([Delivery, DeliveryZone])],
|
||||
imports: [TypeOrmModule.forFeature([Delivery, DeliveryZone, DeliveryStatusHistory, Driver])],
|
||||
controllers: [DeliveryController],
|
||||
providers: [DeliveryService],
|
||||
exports: [DeliveryService],
|
||||
|
||||
@ -0,0 +1,46 @@
|
||||
import {
|
||||
Entity,
|
||||
PrimaryGeneratedColumn,
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
ManyToOne,
|
||||
JoinColumn,
|
||||
Index,
|
||||
} from 'typeorm';
|
||||
import { Delivery } from './delivery.entity';
|
||||
|
||||
@Entity({ schema: 'delivery', name: 'delivery_status_history' })
|
||||
@Index(['deliveryId', 'createdAt'])
|
||||
export class DeliveryStatusHistory {
|
||||
@PrimaryGeneratedColumn('uuid')
|
||||
id: string;
|
||||
|
||||
@Column({ name: 'delivery_id' })
|
||||
deliveryId: string;
|
||||
|
||||
@Column({ length: 20 })
|
||||
status: string;
|
||||
|
||||
@Column({ name: 'previous_status', length: 20, nullable: true })
|
||||
previousStatus: string;
|
||||
|
||||
@Column({ name: 'changed_by', nullable: true })
|
||||
changedBy: string;
|
||||
|
||||
@Column({ name: 'changed_by_name', length: 100, nullable: true })
|
||||
changedByName: string;
|
||||
|
||||
@Column({ type: 'text', nullable: true })
|
||||
notes: string;
|
||||
|
||||
@Column({ type: 'jsonb', nullable: true })
|
||||
location: { lat: number; lng: number };
|
||||
|
||||
@CreateDateColumn({ name: 'created_at' })
|
||||
createdAt: Date;
|
||||
|
||||
// Relations
|
||||
@ManyToOne(() => Delivery)
|
||||
@JoinColumn({ name: 'delivery_id' })
|
||||
delivery: Delivery;
|
||||
}
|
||||
62
src/modules/delivery/entities/driver.entity.ts
Normal file
62
src/modules/delivery/entities/driver.entity.ts
Normal file
@ -0,0 +1,62 @@
|
||||
import {
|
||||
Entity,
|
||||
PrimaryGeneratedColumn,
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
UpdateDateColumn,
|
||||
Index,
|
||||
} from 'typeorm';
|
||||
|
||||
export enum DriverStatus {
|
||||
AVAILABLE = 'available',
|
||||
BUSY = 'busy',
|
||||
OFFLINE = 'offline',
|
||||
INACTIVE = 'inactive',
|
||||
}
|
||||
|
||||
@Entity({ schema: 'delivery', name: 'drivers' })
|
||||
@Index(['tenantId', 'status'])
|
||||
@Index(['tenantId', 'active'])
|
||||
export class Driver {
|
||||
@PrimaryGeneratedColumn('uuid')
|
||||
id: string;
|
||||
|
||||
@Column({ name: 'tenant_id' })
|
||||
tenantId: string;
|
||||
|
||||
@Column({ name: 'user_id', nullable: true })
|
||||
userId: string;
|
||||
|
||||
@Column({ length: 100 })
|
||||
name: string;
|
||||
|
||||
@Column({ length: 20 })
|
||||
phone: string;
|
||||
|
||||
@Column({ name: 'vehicle_type', length: 50, nullable: true })
|
||||
vehicleType: string;
|
||||
|
||||
@Column({ name: 'vehicle_plate', length: 20, nullable: true })
|
||||
vehiclePlate: string;
|
||||
|
||||
@Column({ name: 'photo_url', type: 'text', nullable: true })
|
||||
photoUrl: string;
|
||||
|
||||
@Column({ type: 'varchar', length: 20, default: DriverStatus.AVAILABLE })
|
||||
status: DriverStatus;
|
||||
|
||||
@Column({ name: 'current_location', type: 'jsonb', nullable: true })
|
||||
currentLocation: { lat: number; lng: number };
|
||||
|
||||
@Column({ name: 'last_seen_at', type: 'timestamptz', nullable: true })
|
||||
lastSeenAt: Date;
|
||||
|
||||
@Column({ default: true })
|
||||
active: boolean;
|
||||
|
||||
@CreateDateColumn({ name: 'created_at' })
|
||||
createdAt: Date;
|
||||
|
||||
@UpdateDateColumn({ name: 'updated_at' })
|
||||
updatedAt: Date;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user