added the models and the cerate tabels
This commit is contained in:
parent
7487dec93f
commit
ec6b96aadc
@ -4,7 +4,7 @@
|
|||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "ts-node src/index.ts"
|
"start": "ts-node src/app.ts"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@ -15,6 +15,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/express": "^5.0.0",
|
"@types/express": "^5.0.0",
|
||||||
"http-status-codes": "^2.3.0",
|
"http-status-codes": "^2.3.0",
|
||||||
|
"ts-node": "^10.9.2",
|
||||||
"typescript": "^5.8.2"
|
"typescript": "^5.8.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@ -1,6 +1,10 @@
|
|||||||
import express from 'express';
|
import express, {json} from 'express';
|
||||||
|
import flightRouter from "./routes/flight-router";
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
|
app.use(json())
|
||||||
|
app.use('/api/flights', flightRouter)
|
||||||
|
|
||||||
|
|
||||||
app.listen(3000, () => {
|
app.listen(3000, () => {
|
||||||
console.log("Started Server on Port 3000")
|
console.log("Started Server on Port 3000")
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import {Database, open} from "sqlite";
|
import {Database, open} from "sqlite";
|
||||||
import sqlite3 from "sqlite";
|
import sqlite3 from "sqlite3";
|
||||||
|
|
||||||
export class DB {
|
export class DB {
|
||||||
|
|
||||||
@ -9,6 +9,7 @@ export class DB {
|
|||||||
driver: sqlite3.Database
|
driver: sqlite3.Database
|
||||||
});
|
});
|
||||||
await connection.exec('PRAGMA foreign_keys = ON;');
|
await connection.exec('PRAGMA foreign_keys = ON;');
|
||||||
|
await this.createTables(connection);
|
||||||
return connection;
|
return connection;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -16,7 +17,6 @@ export class DB {
|
|||||||
await db.exec("begin transaction;");
|
await db.exec("begin transaction;");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static async commitTransaction(db: Database) {
|
static async commitTransaction(db: Database) {
|
||||||
await db.exec("commit;")
|
await db.exec("commit;")
|
||||||
}
|
}
|
||||||
@ -24,4 +24,65 @@ export class DB {
|
|||||||
static async rollbackTransaction(db: Database) {
|
static async rollbackTransaction(db: Database) {
|
||||||
await db.exec("rollback;")
|
await db.exec("rollback;")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static async createTables(db: Database){
|
||||||
|
await this.beginTransaction(db);
|
||||||
|
try{
|
||||||
|
await db.exec(`create table if not exists Airport (
|
||||||
|
icao TEXT NOT NULL,
|
||||||
|
name TEXT NOT NULL,
|
||||||
|
country TEXT NOT NULL,
|
||||||
|
runwayLength TEXT NOT NULL,
|
||||||
|
CONSTRAINT pk_airport PRIMARY KEY (icao)
|
||||||
|
)`);
|
||||||
|
|
||||||
|
await db.exec(`create table if not exists Plane
|
||||||
|
(
|
||||||
|
tailNo Text Not Null,
|
||||||
|
model Text not null,
|
||||||
|
manufacturer text not null,
|
||||||
|
capacity int not null,
|
||||||
|
constraint pk_plane primary key (tailNo)
|
||||||
|
);`)
|
||||||
|
|
||||||
|
await db.exec(`create table if not exists Flight
|
||||||
|
(
|
||||||
|
flightNo TEXT not null ,
|
||||||
|
departure text not null,
|
||||||
|
arrival text,
|
||||||
|
operates Text not null,
|
||||||
|
departs text not null,
|
||||||
|
arrives text not null,
|
||||||
|
constraint pk_plane primary key (flightNo),
|
||||||
|
constraint fk_arrives foreign key (arrives) references Airport (icao),
|
||||||
|
constraint fk_departs foreign key (arrives) references Airport (icao)
|
||||||
|
);`);
|
||||||
|
await db.exec(` create table if not exists Passenger
|
||||||
|
(
|
||||||
|
ssn TEXT not null,
|
||||||
|
name TEXT not null,
|
||||||
|
dateOfBirth text not null,
|
||||||
|
isFemale boolean,
|
||||||
|
|
||||||
|
constraint pk_passenger primary key (ssn)
|
||||||
|
);
|
||||||
|
`);
|
||||||
|
await db.exec(`create table if not exists Reservation
|
||||||
|
(
|
||||||
|
ticketNo INTEGER not null primary key autoincrement,
|
||||||
|
seat TEXT not null,
|
||||||
|
flight TEXT not null,
|
||||||
|
passenger TEXT not null,
|
||||||
|
constraint fk_flight foreign key (flight) references Flight (flightNo),
|
||||||
|
constraint fk_passenger foreign key (passenger) references Passenger (ssn)
|
||||||
|
);`);
|
||||||
|
await this.commitTransaction(db);
|
||||||
|
}
|
||||||
|
|
||||||
|
catch (error){
|
||||||
|
console.error(error);
|
||||||
|
await this.rollbackTransaction(db)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
14
src/models/Airport.ts
Normal file
14
src/models/Airport.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
export class Airport{
|
||||||
|
public icao : string;
|
||||||
|
public name : string;
|
||||||
|
public country: string;
|
||||||
|
public runwayLength: number;
|
||||||
|
|
||||||
|
|
||||||
|
constructor(icao: string, name: string, country: string, runwayLength: number) {
|
||||||
|
this.icao = icao;
|
||||||
|
this.name = name;
|
||||||
|
this.country = country;
|
||||||
|
this.runwayLength = runwayLength;
|
||||||
|
}
|
||||||
|
}
|
||||||
22
src/models/Flight.ts
Normal file
22
src/models/Flight.ts
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import {Plane} from "./Plane";
|
||||||
|
import {Airport} from "./Airport";
|
||||||
|
|
||||||
|
export class Flight {
|
||||||
|
public flightNo : string;
|
||||||
|
public departure : Date;
|
||||||
|
public departs : Airport;
|
||||||
|
public arrives : Airport;
|
||||||
|
public arrival : Date | null;
|
||||||
|
public operates : Plane;
|
||||||
|
|
||||||
|
|
||||||
|
constructor(flightNo: string, operates: Plane, departs: Airport, arrives : Airport,
|
||||||
|
departure: Date, arrival: Date | null = null) {
|
||||||
|
this.flightNo = flightNo;
|
||||||
|
this.departure = departure;
|
||||||
|
this.departs = departs;
|
||||||
|
this.arrives = arrives;
|
||||||
|
this.arrival = arrival;
|
||||||
|
this.operates = operates;
|
||||||
|
}
|
||||||
|
}
|
||||||
14
src/models/Passenger.ts
Normal file
14
src/models/Passenger.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
export class Passenger{
|
||||||
|
public ssn: string
|
||||||
|
public name: string
|
||||||
|
public dateOfBirth: Date
|
||||||
|
public isFemale: boolean | null
|
||||||
|
|
||||||
|
|
||||||
|
constructor(ssn: string, name: string, dateOfBirth: Date, isFemale: boolean | null = null) {
|
||||||
|
this.ssn = ssn;
|
||||||
|
this.name = name;
|
||||||
|
this.dateOfBirth = dateOfBirth;
|
||||||
|
this.isFemale = isFemale;
|
||||||
|
}
|
||||||
|
}
|
||||||
14
src/models/Plane.ts
Normal file
14
src/models/Plane.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
export class Plane{
|
||||||
|
public tailNo : string;
|
||||||
|
public model : string;
|
||||||
|
public manufacturer : string;
|
||||||
|
public capacity : number;
|
||||||
|
|
||||||
|
|
||||||
|
constructor(tailNo: string, model: string, manufacturer: string, capacity: number) {
|
||||||
|
this.tailNo = tailNo;
|
||||||
|
this.model = model;
|
||||||
|
this.manufacturer = manufacturer;
|
||||||
|
this.capacity = capacity;
|
||||||
|
}
|
||||||
|
}
|
||||||
15
src/models/Reservation.ts
Normal file
15
src/models/Reservation.ts
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import {Flight} from "./Flight";
|
||||||
|
|
||||||
|
export class Reservation{
|
||||||
|
public ticketNo : number = -1;
|
||||||
|
public seat : string;
|
||||||
|
public flight : Flight;
|
||||||
|
public passenger : Reservation;
|
||||||
|
|
||||||
|
|
||||||
|
constructor(seat: string, flight: Flight, passenger: Reservation) {
|
||||||
|
this.seat = seat;
|
||||||
|
this.flight = flight;
|
||||||
|
this.passenger = passenger;
|
||||||
|
}
|
||||||
|
}
|
||||||
14
src/routes/flight-router.ts
Normal file
14
src/routes/flight-router.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
import express, {Request, Response} from "express";
|
||||||
|
import {Unit} from "../database/Unit";
|
||||||
|
|
||||||
|
const router = express.Router();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
router.get('/', async (req : Request , res:Response) : Promise<void> => {
|
||||||
|
await Unit.create(true);
|
||||||
|
res.sendStatus(200);
|
||||||
|
})
|
||||||
|
|
||||||
|
export default router;
|
||||||
Loading…
Reference in New Issue
Block a user