mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-29 21:08:12 +00:00
Project Initialization
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
import { BaseEntity } from '@edr/api-common';
|
||||
import { Passenger } from '@edr/types';
|
||||
import { Column, Entity } from 'typeorm';
|
||||
|
||||
@Entity({ name: 'seats' })
|
||||
export class Seat extends BaseEntity {
|
||||
@Column({ name: 'schedule_id', type: 'uuid' })
|
||||
scheduleId!: string;
|
||||
|
||||
@Column({ name: 'seat_number', type: 'varchar', length: 16 })
|
||||
seatNumber!: string;
|
||||
|
||||
@Column({ name: 'seat_class', type: 'enum', enum: Passenger.SeatClass })
|
||||
seatClass!: Passenger.SeatClass;
|
||||
|
||||
@Column({
|
||||
name: 'status',
|
||||
type: 'enum',
|
||||
enum: Passenger.SeatStatus,
|
||||
default: Passenger.SeatStatus.Available,
|
||||
})
|
||||
status!: Passenger.SeatStatus;
|
||||
|
||||
@Column({ name: 'price', type: 'numeric', precision: 10, scale: 2 })
|
||||
price!: number;
|
||||
}
|
||||
17
apps/edr-passenger-api/src/modules/seats/seats.controller.ts
Normal file
17
apps/edr-passenger-api/src/modules/seats/seats.controller.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import { Controller, Get, Param, ParseUUIDPipe } from '@nestjs/common';
|
||||
import { ApiOperation, ApiTags } from '@nestjs/swagger';
|
||||
|
||||
import { SeatsService } from './seats.service';
|
||||
|
||||
@ApiTags('seats')
|
||||
// @UseGuards(JwtAuthGuard) — TODO: integrate @edr/auth
|
||||
@Controller('seats')
|
||||
export class SeatsController {
|
||||
constructor(private readonly seatsService: SeatsService) {}
|
||||
|
||||
@Get('schedule/:scheduleId')
|
||||
@ApiOperation({ summary: 'List seats for a schedule' })
|
||||
findBySchedule(@Param('scheduleId', ParseUUIDPipe) scheduleId: string) {
|
||||
return this.seatsService.findBySchedule(scheduleId);
|
||||
}
|
||||
}
|
||||
14
apps/edr-passenger-api/src/modules/seats/seats.module.ts
Normal file
14
apps/edr-passenger-api/src/modules/seats/seats.module.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
|
||||
import { Seat } from './entities/seat.entity';
|
||||
import { SeatsController } from './seats.controller';
|
||||
import { SeatsService } from './seats.service';
|
||||
|
||||
@Module({
|
||||
imports: [TypeOrmModule.forFeature([Seat])],
|
||||
controllers: [SeatsController],
|
||||
providers: [SeatsService],
|
||||
exports: [SeatsService],
|
||||
})
|
||||
export class SeatsModule {}
|
||||
21
apps/edr-passenger-api/src/modules/seats/seats.service.ts
Normal file
21
apps/edr-passenger-api/src/modules/seats/seats.service.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
|
||||
import { Seat } from './entities/seat.entity';
|
||||
|
||||
@Injectable()
|
||||
export class SeatsService {
|
||||
constructor(
|
||||
@InjectRepository(Seat)
|
||||
private readonly seatsRepository: Repository<Seat>,
|
||||
) {}
|
||||
|
||||
/** List every seat on a given schedule, ordered by seat number. */
|
||||
findBySchedule(scheduleId: string): Promise<Seat[]> {
|
||||
return this.seatsRepository.find({
|
||||
where: { scheduleId },
|
||||
order: { seatNumber: 'ASC' },
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user