Core enteties:
Parking spot
user
reservations
Table USERS:
user_id[primary key]
//other metadata
Table SPOTS:
parking_id[primary key],
price,
//other metadata
Table RESERVATIONS:
reservation_id[pk]
user_id[fk]
parking_id[fk]
from
to
checkin_time
checkout_time
created_at
API:
// list of available parkings in given log
GET /parkings?from_time={from_time}&to_time={to_time}&page={page}&count={count} ->{
available_parkings[] : {
parking_id,
price
}
}
// create new reservation
POST /users/reservations->{ parking_id = {parking_id}, from={from}, to={to},
payment_details={details} } -> 201
// get all users reservations
GET /users/reservations->{
reservations_info[] : {
parking_id, from, to
}
}
// cancel reservation
DELETE /users/reservations ->{
parking_id, from, to
}
// check in user
PUT /users/check_in->{
parking_id,
checkin_time={time}
}
// check out user
PUT /users/check_out->{
parking_id,
checkout_time={time}
}