diff --git a/src/types.ts b/src/types.ts index 3aca8c3..12bcddd 100644 --- a/src/types.ts +++ b/src/types.ts @@ -22,6 +22,7 @@ export const userReviewSchema = object({ export const serverReviewSchema = userReviewSchema.shape({ id: string().length(6).required(), + timestamp: string().required() }); export type UserSideReview = InferType; diff --git a/src/utils/ReviewData.ts b/src/utils/ReviewData.ts index 3e00c60..b87d049 100644 --- a/src/utils/ReviewData.ts +++ b/src/utils/ReviewData.ts @@ -5,7 +5,7 @@ import { userRating, UserSideReview, } from "../types"; -import { appendId, checkFile, stripId } from "./functions"; +import { toServerReview, checkFile, stripId } from "./functions"; export class ReviewData { public data: ServerSideReview[]; @@ -16,7 +16,7 @@ export class ReviewData { public async appendReview(review: UserSideReview): Promise { await serverReviewSchema - .validate(appendId(review)) + .validate(toServerReview(review)) .then((validReview) => { this.data.push(validReview); diff --git a/src/utils/functions.ts b/src/utils/functions.ts index 2db4bb6..a331106 100644 --- a/src/utils/functions.ts +++ b/src/utils/functions.ts @@ -26,21 +26,25 @@ export function checkFile( // Generates a unique 6-character ID export const generateId = (): string => crypto.randomBytes(3).toString("hex"); -export function appendId(userReview: UserSideReview): ServerSideReview { +export const getTimestamp = (): string => new Date().toISOString(); + +export function toServerReview(userReview: UserSideReview): ServerSideReview { return { rating: userReview.rating, username: userReview.username, title: userReview.title, content: userReview.content, id: generateId(), + timestamp: getTimestamp() }; } -export function stripId(serverReview: ServerSideReview): UserSideReview { +export function stripId(serverReview: ServerSideReview) { return { rating: serverReview.rating, username: serverReview.username, title: serverReview.title, - content: serverReview.content + content: serverReview.content, + timestamp: serverReview.timestamp }; }