diff --git a/apps/blueprints/src/components/Header.tsx b/apps/blueprints/src/components/Header.tsx index 6ef1aae..18ee4f8 100644 --- a/apps/blueprints/src/components/Header.tsx +++ b/apps/blueprints/src/components/Header.tsx @@ -56,6 +56,7 @@ export const Header: React.FC = (props) => { > {auth ? ( <> + My Favorites My blueprints Account About diff --git a/apps/blueprints/src/pages/user/favorites.tsx b/apps/blueprints/src/pages/user/favorites.tsx new file mode 100644 index 0000000..b66c61e --- /dev/null +++ b/apps/blueprints/src/pages/user/favorites.tsx @@ -0,0 +1,49 @@ +import React from "react"; +import { NextPage } from "next"; +import { SimpleGrid, Box, Text } from "@chakra-ui/react"; +import { getUserFavoriteBlueprintPages } from "@factorio-sites/database"; +import { BlueprintPage } from "@factorio-sites/types"; +import { pageHandler } from "../../utils/page-handler"; +import { BlueprintLink } from "../../components/BlueprintLink"; +import { Panel } from "../../components/Panel"; + +interface UserBlueprintsProps { + blueprints: BlueprintPage[]; +} + +export const UserBlueprints: NextPage = ({ blueprints }) => { + if (!blueprints) return null; + + return ( + + + + Your favorites + + + {blueprints.length !== 0 ? ( + blueprints.map((bp) => ) + ) : ( + You don't have any favorites yet + )} + + + + ); +}; + +export const getServerSideProps = pageHandler(async (_, { session, redirect }) => { + if (!session) return redirect("/"); + + const blueprints = await getUserFavoriteBlueprintPages(session.user.id); + + return { props: { blueprints } }; +}); + +export default UserBlueprints; diff --git a/docker/factorio-blueprints/docker-compose.yml b/docker/factorio-blueprints/docker-compose.yml index ef63280..a35909b 100644 --- a/docker/factorio-blueprints/docker-compose.yml +++ b/docker/factorio-blueprints/docker-compose.yml @@ -11,7 +11,7 @@ services: ports: - 5432:5432 adminer: - image: dpage/pgadmin4:4 + image: dpage/pgadmin4:5 container_name: factorio-blueprints-database-admin restart: always volumes: diff --git a/libs/database/src/lib/data/blueprint_page.ts b/libs/database/src/lib/data/blueprint_page.ts index d7bd89e..64f0404 100644 --- a/libs/database/src/lib/data/blueprint_page.ts +++ b/libs/database/src/lib/data/blueprint_page.ts @@ -54,6 +54,19 @@ export async function getBlueprintPageByFactorioprintsId( return result ? mapBlueprintPageEntityToObject(result) : null; } +export async function getUserFavoriteBlueprintPages(user_id: string) { + const result = await prisma.blueprint_page.findMany({ + where: { + user_favorites: { + some: { + user_id: user_id, + }, + }, + }, + }); + return result ? result.map((row) => mapBlueprintPageEntityToObject(row)) : []; +} + export async function searchBlueprintPages({ page = 1, perPage = 10,
You don't have any favorites yet