Cars and drivers demo app

Pre-request

  • node
  • mysql
  • docker

Build and run

Docker

Clone the project

$ git clone git@github.com:stepanov/cars-and-drivers.git

Configuration

$ copy .env.example .env

Run docker

$ docker-compose -f docker-compose.yml up --build

Run migrations

$ docker-compose run app npx typeorm migration:run

Test

App will be available locally at http;//localhost:3010 (if you change the port then use it instead). GraphQL playground: http://localhost:3010/graphql

Queries

Get Cars*

  query getCars {
    cars{
      plate_number
      brand
      drivers {
        name
        phone
      }
    }
  }

** Get Car by ID**

  query getCar {
    car(
      id:1
    ) {
      plate_number
      brand
    }
  }

Get Drivers

  query getDrivers {
    drivers {
      name
      phone
    }
  }

Get Driver By ID

  query getDriver {
    driver(
      id:1
    ) {
      name
      phone
    }
  }
Mutations

Add a car

  mutation createCar {
    createCar(
      plate_number:"ABC124"
      brand: "Opel"
      note:"My second car"
    ) {
      id
    }
  }

Add a driver

  mutation createDriver {
    createDriver(
      name: "Bobby Torn"
      phone:"1234557674"
      note:"The second driver"
    ) {
      id
    }
  }

Update a driver

  mutation updateDriver {
    updateDriver(
      id:2
      car_id:1
    ) {
      id
    }
  }

Development mode

Clone the project

$ git clone git@github.com:stepanov/cars-and-drivers.git

Configuration

$ copy .env.example .env

Build the project

$ npm install

Create a database

$ mysqladmin -uroot create cars_and_drivers

Run migrations

$ npx typeorm migration:run

Run the project

$ npm run start:dev