/scheduler-api

API server to the schedular app

Primary LanguageJavaScript

Interview Scheduler API

Setup

Install dependencies with npm install.

Creating The DB

Use the psql -U development command to login to the PostgreSQL server with the username development and the password development.

Create a database with the command CREATE DATABASE scheduler_development;.

Use .env and fill in the necessary PostgreSQL configuration. The node-postgres library uses these environment variables by default.

PGHOST=localhost
PGUSER=development
PGDATABASE=scheduler_development
PGPASSWORD=development
PGPORT=5432

Seeding

Run a the development server with npm start in the Host environment.

Both of these achieve the same result.

  • Make a GET request to /api/debug/reset with curl http://localhost:8001/api/debug/reset.
  • Use the browser to navigate to http://localhost:8001/api/debug/reset.

The development data is random. Each time you seed you expect to see different appointments.

Run The Server

Running the server normally

npm start

Running the server so it returns an error when saving/deleting for testing the client's error handling capabilities

npm run error

Api

Days

GET /api/days

Response

[
  {
    "id": 1,
    "name": "Monday",
    "appointments": [1, 2],
    "interviewers": [1, 2],
    "spots": 0
  }
]

Appointments

GET /api/appointments

Response:

{
  "1": {
    "id": 1,
    "time": "12pm",
    "interview": {
      "student": "Lydia Miller-Jones",
      "interviewer": 1
    }
  },
  "2": {
    "id": 2,
    "time": "1pm",
    "interview": {
      "student": "Archie Cohen",
      "interviewer": 2
    }
  }
}

PUT /api/appointments/:id

Body:

{
  "interview": {
    "student": String,
    "interviewer": Number
  }
}

DELETE /api/appointments/:id

Interviewers

GET /api/interviewers

Response:

{
  "1": {
    "id": 1,
    "name": "Sylvia Palmer",
    "avatar": "https://i.imgur.com/LpaY82x.png"
  },
  "2": {
    "id": 2,
    "name": "Tori Malcolm",
    "avatar": "https://i.imgur.com/Nmx0Qxo.png"
  }
}