From 92cbe519b779e66a8d268988e5f33fdf855d70d1 Mon Sep 17 00:00:00 2001 From: powermaker450 Date: Tue, 27 Aug 2024 13:42:00 -0400 Subject: [PATCH] Append timestamp to reviews --- src/types.ts | 1 + src/utils/ReviewData.ts | 4 ++-- src/utils/functions.ts | 10 +++++++--- 3 files changed, 10 insertions(+), 5 deletions(-) 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 }; }