[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 { DeliveryService } from './delivery.service';
|
||||||
import { Delivery } from './entities/delivery.entity';
|
import { Delivery } from './entities/delivery.entity';
|
||||||
import { DeliveryZone } from './entities/delivery-zone.entity';
|
import { DeliveryZone } from './entities/delivery-zone.entity';
|
||||||
|
import { DeliveryStatusHistory } from './entities/delivery-status-history.entity';
|
||||||
|
import { Driver } from './entities/driver.entity';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [TypeOrmModule.forFeature([Delivery, DeliveryZone])],
|
imports: [TypeOrmModule.forFeature([Delivery, DeliveryZone, DeliveryStatusHistory, Driver])],
|
||||||
controllers: [DeliveryController],
|
controllers: [DeliveryController],
|
||||||
providers: [DeliveryService],
|
providers: [DeliveryService],
|
||||||
exports: [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