diff --git a/database/local-data-seed/V1.1000__Local_Seed_Data.sql b/database/local-data-seed/V1.1000__Local_Seed_Data.sql index f9d23d8..755efeb 100644 --- a/database/local-data-seed/V1.1000__Local_Seed_Data.sql +++ b/database/local-data-seed/V1.1000__Local_Seed_Data.sql @@ -28,28 +28,28 @@ WITH inserted_teams AS ( ) INSERT INTO - public.driver (first_name, last_name, team_id, driver_number, place_of_birth, created_at) + public.driver (first_name, last_name, team_id, driver_number, place_of_birth, country, created_at) VALUES - ('Alexander', 'Albon', (SELECT id FROM inserted_teams WHERE team_name = 'Williams'), 23, 'London, England', CURRENT_TIMESTAMP), - ('Fernando', 'Alonso', (SELECT id FROM inserted_teams WHERE team_name = 'Aston Martin'), 14, 'Oviedo, Spain', CURRENT_TIMESTAMP), - ('Valtteri', 'Bottas', (SELECT id FROM inserted_teams WHERE team_name = 'Kick Sauber'), 77, 'Nastola, Finland', CURRENT_TIMESTAMP), - ('Pierre', 'Gasly', (SELECT id FROM inserted_teams WHERE team_name = 'Alpine'), 10, 'Rouen, France', CURRENT_TIMESTAMP), - ('Lewis', 'Hamilton', (SELECT id FROM inserted_teams WHERE team_name = 'Mercedes'), 44, 'Stevenage, England', CURRENT_TIMESTAMP), - ('Nico', 'Hülkenberg', (SELECT id FROM inserted_teams WHERE team_name = 'Haas'), 27, 'Emmerich am Rhein, Germany', CURRENT_TIMESTAMP), - ('Charles', 'Leclerc', (SELECT id FROM inserted_teams WHERE team_name = 'Ferrari'), 16, 'Monte Carlo, Monaco', CURRENT_TIMESTAMP), - ('Kevin', 'Magnussen', (SELECT id FROM inserted_teams WHERE team_name = 'Haas'), 20, 'Roskilde, Denmark', CURRENT_TIMESTAMP), - ('Lando', 'Norris', (SELECT id FROM inserted_teams WHERE team_name = 'McLaren'), 4, 'Bristol, England', CURRENT_TIMESTAMP), - ('Esteban', 'Ocon', (SELECT id FROM inserted_teams WHERE team_name = 'Alpine'), 31, 'Évreux, Normandy', CURRENT_TIMESTAMP), - ('Sergio', 'Pérez', (SELECT id FROM inserted_teams WHERE team_name = 'Red Bull'), 11, 'Guadalajara, Mexico', CURRENT_TIMESTAMP), - ('Oscar', 'Piastri', (SELECT id FROM inserted_teams WHERE team_name = 'McLaren'), 81, 'Melbourne, Victoria', CURRENT_TIMESTAMP), - ('Daniel', 'Ricciardo', (SELECT id FROM inserted_teams WHERE team_name = 'Visa Cash App RB'), 3, 'Perth, Australia', CURRENT_TIMESTAMP), - ('George', 'Russell', (SELECT id FROM inserted_teams WHERE team_name = 'Mercedes'), 63, 'King''s Lynn, England', CURRENT_TIMESTAMP), - ('Carlos', 'Sainz', (SELECT id FROM inserted_teams WHERE team_name = 'Ferrari'), 55, 'Madrid, Spain', CURRENT_TIMESTAMP), - ('Logan', 'Sargeant', (SELECT id FROM inserted_teams WHERE team_name = 'Williams'), 2, 'Fort Lauderdale, Florida', CURRENT_TIMESTAMP), - ('Lance', 'Stroll', (SELECT id FROM inserted_teams WHERE team_name = 'Aston Martin'), 18, 'Montreal, Canada', CURRENT_TIMESTAMP), - ('Yuki', 'Tsunoda', (SELECT id FROM inserted_teams WHERE team_name = 'Visa Cash App RB'), 22, 'Sagamihara, Japan', CURRENT_TIMESTAMP), - ('Max', 'Verstappen', (SELECT id FROM inserted_teams WHERE team_name = 'Red Bull'), 1, 'Hasselt, Belgium', CURRENT_TIMESTAMP), - ('Guanyu', 'Zhou', (SELECT id FROM inserted_teams WHERE team_name = 'Kick Sauber'), 24, 'Shanghai, China', CURRENT_TIMESTAMP); + ('Alexander', 'Albon', (SELECT id FROM inserted_teams WHERE team_name = 'Williams'), 23, 'London, England', 'Thailand', CURRENT_TIMESTAMP), + ('Fernando', 'Alonso', (SELECT id FROM inserted_teams WHERE team_name = 'Aston Martin'), 14, 'Oviedo, Spain', 'Spain', CURRENT_TIMESTAMP), + ('Valtteri', 'Bottas', (SELECT id FROM inserted_teams WHERE team_name = 'Kick Sauber'), 77, 'Nastola, Finland', 'Finland', CURRENT_TIMESTAMP), + ('Pierre', 'Gasly', (SELECT id FROM inserted_teams WHERE team_name = 'Alpine'), 10, 'Rouen, France', 'France', CURRENT_TIMESTAMP), + ('Lewis', 'Hamilton', (SELECT id FROM inserted_teams WHERE team_name = 'Mercedes'), 44, 'Stevenage, England', 'United Kingdom', CURRENT_TIMESTAMP), + ('Nico', 'Hülkenberg', (SELECT id FROM inserted_teams WHERE team_name = 'Haas'), 27, 'Emmerich am Rhein, Germany', 'Germany', CURRENT_TIMESTAMP), + ('Charles', 'Leclerc', (SELECT id FROM inserted_teams WHERE team_name = 'Ferrari'), 16, 'Monte Carlo, Monaco', 'Monaco', CURRENT_TIMESTAMP), + ('Kevin', 'Magnussen', (SELECT id FROM inserted_teams WHERE team_name = 'Haas'), 20, 'Roskilde, Denmark', 'Denmark', CURRENT_TIMESTAMP), + ('Lando', 'Norris', (SELECT id FROM inserted_teams WHERE team_name = 'McLaren'), 4, 'Bristol, England', 'United Kingdom', CURRENT_TIMESTAMP), + ('Esteban', 'Ocon', (SELECT id FROM inserted_teams WHERE team_name = 'Alpine'), 31, 'Évreux, Normandy', 'France', CURRENT_TIMESTAMP), + ('Sergio', 'Pérez', (SELECT id FROM inserted_teams WHERE team_name = 'Red Bull'), 11, 'Guadalajara, Mexico', 'Mexico', CURRENT_TIMESTAMP), + ('Oscar', 'Piastri', (SELECT id FROM inserted_teams WHERE team_name = 'McLaren'), 81, 'Melbourne, Victoria', 'Australia', CURRENT_TIMESTAMP), + ('Daniel', 'Ricciardo', (SELECT id FROM inserted_teams WHERE team_name = 'Visa Cash App RB'), 3, 'Perth, Australia', 'Australia', CURRENT_TIMESTAMP), + ('George', 'Russell', (SELECT id FROM inserted_teams WHERE team_name = 'Mercedes'), 63, 'King''s Lynn, England', 'United Kingdom', CURRENT_TIMESTAMP), + ('Carlos', 'Sainz', (SELECT id FROM inserted_teams WHERE team_name = 'Ferrari'), 55, 'Madrid, Spain', 'Spain', CURRENT_TIMESTAMP), + ('Logan', 'Sargeant', (SELECT id FROM inserted_teams WHERE team_name = 'Williams'), 2, 'Fort Lauderdale, Florida', 'United States', CURRENT_TIMESTAMP), + ('Lance', 'Stroll', (SELECT id FROM inserted_teams WHERE team_name = 'Aston Martin'), 18, 'Montreal, Canada', 'Canada', CURRENT_TIMESTAMP), + ('Yuki', 'Tsunoda', (SELECT id FROM inserted_teams WHERE team_name = 'Visa Cash App RB'), 22, 'Sagamihara, Japan', 'Japan', CURRENT_TIMESTAMP), + ('Max', 'Verstappen', (SELECT id FROM inserted_teams WHERE team_name = 'Red Bull'), 1, 'Hasselt, Belgium', 'Netherlands', CURRENT_TIMESTAMP), + ('Guanyu', 'Zhou', (SELECT id FROM inserted_teams WHERE team_name = 'Kick Sauber'), 24, 'Shanghai, China', 'China', CURRENT_TIMESTAMP); INSERT INTO public.grand_prix (grand_prix_name, grand_prix_location, fp1_start, fp2_start, fp3_start, qualifying_start, race_start, sprint_qualifying_start, sprint_race_start, is_sprint_weekend, circuit_name, created_at) diff --git a/database/migrations/V1.5__Add_Driver_Country.sql b/database/migrations/V1.5__Add_Driver_Country.sql new file mode 100644 index 0000000..66fd506 --- /dev/null +++ b/database/migrations/V1.5__Add_Driver_Country.sql @@ -0,0 +1,2 @@ +ALTER TABLE driver +ADD COLUMN country VARCHAR(50) NOT NULL; \ No newline at end of file diff --git a/server/controllers/drivers.ts b/server/controllers/drivers.ts index 753d734..e6ae219 100644 --- a/server/controllers/drivers.ts +++ b/server/controllers/drivers.ts @@ -19,6 +19,7 @@ const deleteDriver = async (req: Request, res: Response) => { first_name: deletedDriver.first_name, last_name: deletedDriver.last_name, place_of_birth: deletedDriver.place_of_birth, + country: deletedDriver.country, created_at: deletedDriver.created_at, }, }); @@ -40,14 +41,21 @@ const getDriverById = async (req: Request, res: Response) => { }; const postDriver = async (req: Request, res: Response) => { - const { first_name, last_name, team_id, driver_number, place_of_birth } = - req.body; + const { + first_name, + last_name, + team_id, + driver_number, + place_of_birth, + country, + } = req.body; const newDriver = { first_name, last_name, team_id, driver_number, place_of_birth, + country, created_at: new Date(), }; @@ -56,12 +64,13 @@ const postDriver = async (req: Request, res: Response) => { !newDriver.last_name || !newDriver.team_id || !newDriver.driver_number || - !newDriver.place_of_birth + !newDriver.place_of_birth || + !newDriver.country ) { return res .status(400) .send( - "A driver needs a first name, a last name, a team id, a driver number, and a place of birth." + "A driver needs a first name, a last name, a team id, a driver number, a place of birth, and a country." ); } @@ -93,6 +102,7 @@ const putDriver = async (req: Request, res: Response) => { team_id, driver_number, place_of_birth, + country, created_at, } = req.body; @@ -102,6 +112,7 @@ const putDriver = async (req: Request, res: Response) => { team_id, driver_number, place_of_birth, + country, created_at, }; diff --git a/server/models/drivers.ts b/server/models/drivers.ts index f3f0bae..b06b559 100644 --- a/server/models/drivers.ts +++ b/server/models/drivers.ts @@ -6,6 +6,7 @@ type Driver = { team_id: number; driver_number: number; place_of_birth: string; + country: string; created_at: Date; }; @@ -45,6 +46,7 @@ export const postDriver = async (driver: Driver) => { team_id: driver.team_id, driver_number: driver.driver_number, place_of_birth: driver.place_of_birth, + country: driver.country, created_at: driver.created_at, }, }); diff --git a/server/prisma/schema.prisma b/server/prisma/schema.prisma index c8c0499..ed4a59f 100644 --- a/server/prisma/schema.prisma +++ b/server/prisma/schema.prisma @@ -25,6 +25,7 @@ model driver { updated_at DateTime? @db.Timestamp(6) deleted_at DateTime? @db.Timestamp(6) place_of_birth String @db.VarChar(255) + country String @db.VarChar(50) } model flyway_schema_history {