Skip to content

Commit

Permalink
Add dev index, fix camel case for serializeDatabaseObject[s]
Browse files Browse the repository at this point in the history
  • Loading branch information
renatodellosso committed Feb 18, 2025
1 parent 13ca31a commit 1fc4345
Show file tree
Hide file tree
Showing 10 changed files with 126 additions and 31 deletions.
14 changes: 7 additions & 7 deletions lib/UrlResolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export interface ResolvedUrlData {
* @param object - Any `Object` with a `_id` property
* @returns - The same object, but with `_id` set as a string
*/
export function SerializeDatabaseObject(object: any): any {
export function serializeDatabaseObject(object: any): any {
if (!object) {
return null;
}
Expand All @@ -46,8 +46,8 @@ export function SerializeDatabaseObject(object: any): any {
return object;
}

export function SerializeDatabaseObjects(objectArray: any[]): any[] {
return objectArray.map((obj) => SerializeDatabaseObject(obj));
export function serializeDatabaseObjects(objectArray: any[]): any[] {
return objectArray.map((obj) => serializeDatabaseObject(obj));
}

/**
Expand Down Expand Up @@ -115,10 +115,10 @@ export default async function UrlResolver(
// find these slugs, and convert them to a JSON safe condition
// if they dont exist, simply return nothing
const data: ResolvedUrlData = {
team: SerializeDatabaseObject(await promises[0]),
season: SerializeDatabaseObject(await promises[1]),
competition: SerializeDatabaseObject(await promises[2]),
report: SerializeDatabaseObject(await promises[3]),
team: serializeDatabaseObject(await promises[0]),
season: serializeDatabaseObject(await promises[1]),
competition: serializeDatabaseObject(await promises[2]),
report: serializeDatabaseObject(await promises[3]),
};
return data;
} catch (error) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import { GameId } from "@/lib/client/GameId";
import CollectionId from "@/lib/client/CollectionId";
import { games } from "@/lib/games";
import { getDatabase } from "@/lib/MongoDB";
import UrlResolver, { SerializeDatabaseObject } from "@/lib/UrlResolver";
import UrlResolver, { serializeDatabaseObject } from "@/lib/UrlResolver";
import { ObjectId } from "bson";
import { GetServerSideProps } from "next";
import Flex from "@/components/Flex";
Expand Down Expand Up @@ -330,7 +330,7 @@ export const getServerSideProps: GetServerSideProps = async (context) => {

return {
props: {
pitReport: makeObjSerializeable(SerializeDatabaseObject(pitreport)),
pitReport: makeObjSerializeable(serializeDatabaseObject(pitreport)),
layout: makeObjSerializeable(game.pitReportLayout),
teamNumber: resolved.team?.number,
compName: resolved.competition?.name,
Expand Down
4 changes: 2 additions & 2 deletions pages/[teamSlug]/[seasonSlug]/[competitonSlug]/pitstats.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
QuantData,
Report,
} from "@/lib/Types";
import { SerializeDatabaseObject } from "@/lib/UrlResolver";
import { serializeDatabaseObject } from "@/lib/UrlResolver";

import { GetServerSideProps } from "next";
import { BsGearFill } from "react-icons/bs";
Expand Down Expand Up @@ -493,6 +493,6 @@ export const getServerSideProps: GetServerSideProps = async (context) => {
});

return {
props: { competition: SerializeDatabaseObject(comp) },
props: { competition: serializeDatabaseObject(comp) },
};
};
6 changes: 3 additions & 3 deletions pages/[teamSlug]/[seasonSlug]/[competitonSlug]/scouters.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
Report,
SubjectiveReport,
} from "@/lib/Types";
import { SerializeDatabaseObject } from "@/lib/UrlResolver";
import { serializeDatabaseObject } from "@/lib/UrlResolver";
import ClientApi from "@/lib/api/ClientApi";
import CollectionId from "@/lib/client/CollectionId";
import { useCurrentSession } from "@/lib/client/useCurrentSession";
Expand Down Expand Up @@ -508,8 +508,8 @@ export const getServerSideProps: GetServerSideProps = async (context) => {

return {
props: {
team: SerializeDatabaseObject(team),
competition: SerializeDatabaseObject(comp),
team: serializeDatabaseObject(team),
competition: serializeDatabaseObject(comp),
},
};
};
12 changes: 6 additions & 6 deletions pages/[teamSlug]/[seasonSlug]/[competitonSlug]/stats.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ import { games } from "@/lib/games";
import CollectionId from "@/lib/client/CollectionId";
import { getDatabase } from "@/lib/MongoDB";
import UrlResolver, {
SerializeDatabaseObjects,
SerializeDatabaseObject,
serializeDatabaseObjects,
serializeDatabaseObject,
} from "@/lib/UrlResolver";
import { ObjectId } from "bson";
import { GetServerSideProps } from "next";
Expand Down Expand Up @@ -216,10 +216,10 @@ export const getServerSideProps: GetServerSideProps = async (context) => {

return {
props: {
reports: SerializeDatabaseObjects(reports),
pitReports: SerializeDatabaseObjects(pitReports),
subjectiveReports: SerializeDatabaseObjects(subjectiveReports),
picklists: SerializeDatabaseObject(picklists),
reports: serializeDatabaseObjects(reports),
pitReports: serializeDatabaseObjects(pitReports),
subjectiveReports: serializeDatabaseObjects(subjectiveReports),
picklists: serializeDatabaseObject(picklists),
competition: resolved.competition,
},
};
Expand Down
4 changes: 2 additions & 2 deletions pages/[teamSlug]/[seasonSlug]/index.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import ClientApi from "@/lib/api/ClientApi";
import UrlResolver, { SerializeDatabaseObjects } from "@/lib/UrlResolver";
import UrlResolver, { serializeDatabaseObjects } from "@/lib/UrlResolver";
import { GetServerSideProps } from "next";
import { Competition, Season, Team } from "@/lib/Types";
import Container from "@/components/Container";
Expand Down Expand Up @@ -106,7 +106,7 @@ export const getServerSideProps: GetServerSideProps = async (context) => {
props: {
team: team,
season: season,
competitions: SerializeDatabaseObjects(comp),
competitions: serializeDatabaseObjects(comp),
},
};
};
4 changes: 2 additions & 2 deletions pages/[teamSlug]/createSeason.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { League, Season, Team } from "../../lib/Types";
import UrlResolver, { SerializeDatabaseObjects } from "@/lib/UrlResolver";
import UrlResolver, { serializeDatabaseObjects } from "@/lib/UrlResolver";
import { GetServerSideProps } from "next";
import Container from "@/components/Container";
import { getDatabase } from "@/lib/MongoDB";
Expand Down Expand Up @@ -112,7 +112,7 @@ export const getServerSideProps: GetServerSideProps = async (context) => {
return {
props: {
team: resolved.team,
existingSeasons: SerializeDatabaseObjects(existingSeasons),
existingSeasons: serializeDatabaseObjects(existingSeasons),
},
};
};
10 changes: 5 additions & 5 deletions pages/[teamSlug]/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import UrlResolver, {
SerializeDatabaseObject,
SerializeDatabaseObjects,
serializeDatabaseObject,
serializeDatabaseObjects,
} from "@/lib/UrlResolver";
import { GetServerSideProps } from "next";
import { useEffect, useState } from "react";
Expand Down Expand Up @@ -646,9 +646,9 @@ export const getServerSideProps: GetServerSideProps = async (context) => {
props: {
team: resolved.team,
users: makeObjSerializeable(users),
currentCompetition: SerializeDatabaseObject(comp),
currentSeason: SerializeDatabaseObject(currentSeason),
pastSeasons: SerializeDatabaseObjects(seasons),
currentCompetition: serializeDatabaseObject(comp),
currentSeason: serializeDatabaseObject(currentSeason),
pastSeasons: serializeDatabaseObjects(seasons),
},
};
};
95 changes: 95 additions & 0 deletions pages/dev/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
import Container from "@/components/Container";
import { AuthenticationOptions } from "@/lib/Auth";
import { User } from "@/lib/Types";
import { serializeDatabaseObject } from "@/lib/UrlResolver";
import { isDeveloper } from "@/lib/Utils";
import { GetServerSideProps } from "next";
import { getServerSession } from "next-auth";
import Link from "next/link";
import { makeObjSerializeable } from "../../lib/client/ClientUtils";

export default function DevIndex({ user }: { user: User }) {
return (
<Container
requireAuthentication={true}
title="Developer Dashboard"
>
<h1 className="text-xl">Developer Dashboard</h1>
<p>Hello, {user.name}.</p>
<h2 className="text-lg">Dev Pages</h2>
<ul className="ml-2 list-disc list-inside">
<li>
<Link
href="/dev/cache"
className="link link-primary"
>
Cache Stats and Lookup
</Link>
</li>
<li>
<Link
href="/dev/leveling"
className="link link-primary"
>
Leveling Visualizer
</Link>
</li>
<li>
<Link
href="/dev/localstoragedb"
className="link link-primary"
>
LocalStorageDb Tester
</Link>
</li>
<li>
<Link
href="/dev/qrpamphlet"
className="link link-primary"
>
QR Pamphlet Viewer
</Link>
</li>
<li>
<Link
href="/dev/speedtest"
className="link link-primary"
>
Speedtest
</Link>
</li>
<li>
<Link
href="/dev/useranalytics"
className="link link-primary"
>
User Analytics
</Link>
</li>
</ul>
</Container>
);
}

export const getServerSideProps: GetServerSideProps = async (context) => {
const session = await getServerSession(
context.req,
context.res,
AuthenticationOptions,
);

if (!session?.user || !isDeveloper(session.user.email!)) {
return {
redirect: {
destination: "/api/auth/login",
permanent: false,
},
};
}

return {
props: {
user: makeObjSerializeable(serializeDatabaseObject(session.user)),
},
};
};
4 changes: 2 additions & 2 deletions pages/profile.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { FaPlus } from "react-icons/fa";
import { getDatabase } from "@/lib/MongoDB";
import CollectionId from "@/lib/client/CollectionId";
import { GetServerSideProps } from "next";
import { SerializeDatabaseObject } from "@/lib/UrlResolver";
import { serializeDatabaseObject } from "@/lib/UrlResolver";
import TeamCard from "@/components/TeamCard";
import { UpdateModal } from "@/components/UpdateModal";
import { Analytics } from "@/lib/client/Analytics";
Expand Down Expand Up @@ -240,7 +240,7 @@ export default function Profile(props: { teamList: Team[] }) {
export const getServerSideProps: GetServerSideProps = async (context) => {
const db = await getDatabase();
const teams = await db.findObjects(CollectionId.Teams, {});
const serializedTeams = teams.map((team) => SerializeDatabaseObject(team));
const serializedTeams = teams.map((team) => serializeDatabaseObject(team));

return {
props: { teamList: serializedTeams },
Expand Down

0 comments on commit 1fc4345

Please sign in to comment.