further code improvements

This commit is contained in:
Thomas Ruoff
2020-08-29 00:12:01 +02:00
committed by Thomas Ruoff
parent 52a68e9989
commit 4b16e07985
5 changed files with 23 additions and 22 deletions

View File

@@ -11,7 +11,7 @@ export interface Booking
booker: Booker
startDate: Date
endDate: Date
status: string
status: BOOKING_STATUS
purpose: string
org: string
destination: string

View File

@@ -1,6 +1,6 @@
export const BOOKING_STATUS = {
REQUESTED: 'requested',
CONFIRMED: 'confirmed',
REJECTED: 'rejected',
CANCELED: 'canceled',
export enum BOOKING_STATUS {
REQUESTED = 'requested',
CONFIRMED = 'confirmed',
REJECTED = 'rejected',
CANCELED = 'canceled',
}

View File

@@ -41,12 +41,7 @@ export async function getBookedDays() {
export async function getBookingByUUID(uuid: string) {
await connect()
const booking = await Booking.findOne({ uuid })
return booking.populate('booker').execPopulate()
}
export async function getBookingByUUIDAsJSON(uuid: string) {
const booking = await getBookingByUUID(uuid)
return booking.toJSON()
return booking?.populate('booker').execPopulate()
}
export async function createBooking({

View File

@@ -1,7 +1,7 @@
import { NextApiRequest, NextApiResponse } from 'next'
import { Booking } from '../../../db/booking'
import { BOOKING_STATUS } from '../../../db/bookingStatus'
import { getBookingByUUID, getBookingByUUIDAsJSON } from '../../../db/index'
import { getBookingByUUID } from '../../../db/index'
export default async function userHandler(
req: NextApiRequest,
@@ -9,7 +9,7 @@ export default async function userHandler(
) {
const {
method,
query: { uuids },
query: { uuid: uuids },
} = req
const uuid = Array.isArray(uuids) ? uuids[0] : uuids
@@ -17,10 +17,6 @@ export default async function userHandler(
let booking: Booking
switch (method) {
case 'GET':
booking = await getBookingByUUIDAsJSON(uuid)
res.status(200).json(booking)
break
case 'PATCH':
booking = await getBookingByUUID(uuid)
const readonlyProps = Object.keys(req.body).filter(

View File

@@ -4,15 +4,25 @@ import Footer from '../../components/footer'
import Header from '../../components/header'
import { Booking } from '../../db/booking'
import { BOOKING_STATUS } from '../../db/bookingStatus'
import { getBookingByUUIDAsJSON } from '../../db/index'
import { getBookingByUUID } from '../../db/index'
import { dateFormatFrontend } from '../../helpers/date'
export const getServerSideProps: GetServerSideProps = async (context) => {
const { uuids } = context.params
const {
res,
params: { uuid: uuids },
} = context
const uuid = Array.isArray(uuids) ? uuids[0] : uuids
const booking = await getBookingByUUIDAsJSON(uuid)
const booking = await getBookingByUUID(uuid)
if (!booking) {
res.statusCode = 404
res.end()
return { props: {} }
}
// TODO: hack, not sure why _id is not serilizable
const bookingJSON = JSON.parse(JSON.stringify(booking))
const bookingJSON = JSON.parse(JSON.stringify(booking.toJSON()))
return {
props: { booking: bookingJSON },
}