From 4694edcc62ccd51bc15cf7eac5de5d69e3bb2e40 Mon Sep 17 00:00:00 2001 From: MartinBraquet Date: Tue, 29 Jul 2025 22:25:58 +0200 Subject: [PATCH] Refactor lib --- app/api/auth/[...nextauth]/route.ts | 2 +- app/api/auth/signup/route.ts | 2 +- app/api/auth/verify-email/route.ts | 2 +- app/api/profiles/[id]/route.ts | 2 +- app/api/profiles/route.ts | 4 ++-- app/api/upload/route.ts | 2 +- app/api/user/update-profile/route.ts | 4 ++-- app/profiles/[id]/page.tsx | 33 ++++++++++++++++++---------- app/profiles/page.tsx | 16 +++++++------- lib/{ => client}/LoadingSpinner.tsx | 0 lib/{ => server}/auth.ts | 2 +- lib/{ => server}/db-utils.ts | 2 +- lib/{ => server}/prisma.ts | 0 lib/server/supabase.ts | 8 +++++++ lib/supabase.ts | 6 ----- prisma/seed.ts | 2 +- 16 files changed, 50 insertions(+), 37 deletions(-) rename lib/{ => client}/LoadingSpinner.tsx (100%) rename lib/{ => server}/auth.ts (95%) rename lib/{ => server}/db-utils.ts (84%) rename lib/{ => server}/prisma.ts (100%) create mode 100644 lib/server/supabase.ts delete mode 100644 lib/supabase.ts diff --git a/app/api/auth/[...nextauth]/route.ts b/app/api/auth/[...nextauth]/route.ts index 47105110..a0d57f60 100644 --- a/app/api/auth/[...nextauth]/route.ts +++ b/app/api/auth/[...nextauth]/route.ts @@ -1,5 +1,5 @@ import NextAuth from "next-auth"; -import {authOptions} from "@/lib/auth"; +import {authOptions} from "@/lib/server/auth"; const authHandler = NextAuth(authOptions); export {authHandler as GET, authHandler as POST}; diff --git a/app/api/auth/signup/route.ts b/app/api/auth/signup/route.ts index 61879f6a..a71d28e1 100644 --- a/app/api/auth/signup/route.ts +++ b/app/api/auth/signup/route.ts @@ -1,6 +1,6 @@ import bcrypt from "bcryptjs"; import {NextResponse} from "next/server"; -import {prisma} from "@/lib/prisma"; +import {prisma} from "@/lib/server/prisma"; import {v4 as uuidv4} from 'uuid'; // Helper function to generate a verification token diff --git a/app/api/auth/verify-email/route.ts b/app/api/auth/verify-email/route.ts index 80481d81..4044ad18 100644 --- a/app/api/auth/verify-email/route.ts +++ b/app/api/auth/verify-email/route.ts @@ -1,5 +1,5 @@ import { NextResponse } from "next/server"; -import { prisma } from "@/lib/prisma"; +import { prisma } from "@/lib/server/prisma"; export async function GET(req: Request) { try { diff --git a/app/api/profiles/[id]/route.ts b/app/api/profiles/[id]/route.ts index 218601c5..be501259 100644 --- a/app/api/profiles/[id]/route.ts +++ b/app/api/profiles/[id]/route.ts @@ -1,5 +1,5 @@ import { NextResponse } from "next/server"; -import { prisma } from "@/lib/prisma"; +import { prisma } from "@/lib/server/prisma"; export async function GET( request: Request, diff --git a/app/api/profiles/route.ts b/app/api/profiles/route.ts index 3fc427d6..31780747 100644 --- a/app/api/profiles/route.ts +++ b/app/api/profiles/route.ts @@ -1,6 +1,6 @@ -import { prisma }from "@/lib/prisma"; +import { prisma }from "@/lib/server/prisma"; import { NextResponse } from "next/server"; -import {getSession} from "@/lib/auth"; +import {getSession} from "@/lib/server/auth"; export async function GET(request: Request) { const url = new URL(request.url); diff --git a/app/api/upload/route.ts b/app/api/upload/route.ts index 17f24675..4d34b6ed 100644 --- a/app/api/upload/route.ts +++ b/app/api/upload/route.ts @@ -1,5 +1,5 @@ import {NextResponse} from 'next/server'; -import {getSession} from '@/lib/auth'; +import {getSession} from '@/lib/server/auth'; import {v4 as uuidv4} from 'uuid'; import {GetObjectCommand, PutObjectCommand, S3Client} from '@aws-sdk/client-s3'; import {getSignedUrl} from "@aws-sdk/s3-request-presigner"; diff --git a/app/api/user/update-profile/route.ts b/app/api/user/update-profile/route.ts index d7546422..34483e00 100644 --- a/app/api/user/update-profile/route.ts +++ b/app/api/user/update-profile/route.ts @@ -1,6 +1,6 @@ import {NextResponse} from "next/server"; -import {prisma} from "@/lib/prisma"; -import {getSession} from "@/lib/auth"; +import {prisma} from "@/lib/server/prisma"; +import {getSession} from "@/lib/server/auth"; export async function POST(req: Request) { try { diff --git a/app/profiles/[id]/page.tsx b/app/profiles/[id]/page.tsx index 32d078aa..3e908421 100644 --- a/app/profiles/[id]/page.tsx +++ b/app/profiles/[id]/page.tsx @@ -3,19 +3,30 @@ import {useEffect, useState} from "react"; import {notFound, useParams} from "next/navigation"; import Image from "next/image"; -import LoadingSpinner from "@/lib/LoadingSpinner"; +import LoadingSpinner from "@/lib/client/LoadingSpinner"; -// interface ProfileData { -// name?: string; -// image?: string; -// profile?: any; -// } +interface ProfileData { + name: string; + image: string; + profile: { + location: string; + gender: string; + personalityType: string; + conflictStyle: string; + description: string; + contactInfo: string; + intellectualInterests: { interest?: {name?: string} }[]; + causeAreas: { causeArea?: {name?: string} }[]; + desiredConnections: { connection?: {name?: string} }[]; + promptAnswers: { prompt?: string; answer?: string }[]; + }; +} export const dynamic = "force-dynamic"; // This disables SSG and ISR export default function Post() { const {id} = useParams(); - const [user, setUser] = useState(null); + const [user, setUser] = useState(null); const [image, setImage] = useState(null); const [loading, setLoading] = useState(true); @@ -116,7 +127,7 @@ export default function Post() { key={idx} className="px-3 py-1 text-sm bg-gray-100 rounded-full hover:bg-gray-200 transition" > - {value.connection.name} + {value?.connection?.name} ))} @@ -146,7 +157,7 @@ export default function Post() { {user?.profile?.conflictStyle && (
-

Conflit Style

+

Conflict Style

{user.profile.conflictStyle}

)} @@ -161,7 +172,7 @@ export default function Post() { key={idx} className="px-3 py-1 text-sm bg-gray-100 rounded-full hover:bg-gray-200 transition" > - {value.interest.name} + {value?.interest?.name} ))} @@ -178,7 +189,7 @@ export default function Post() { key={idx} className="px-3 py-1 text-sm bg-gray-100 rounded-full hover:bg-gray-200 transition" > - {value.causeArea.name} + {value?.causeArea?.name} ))} diff --git a/app/profiles/page.tsx b/app/profiles/page.tsx index e07cfc7c..cef2c557 100644 --- a/app/profiles/page.tsx +++ b/app/profiles/page.tsx @@ -2,23 +2,23 @@ import Link from "next/link"; import {useEffect, useState} from "react"; -import LoadingSpinner from "@/lib/LoadingSpinner"; +import LoadingSpinner from "@/lib/client/LoadingSpinner"; // Disable static generation export const dynamic = "force-dynamic"; -// type Profile = { -// id: string; -// name: string; -// createdAt: string; -// profile: any; -// }; +type Profile = { + id: string; + name: string; + createdAt: string; + profile: any; +}; export default function ProfilePage() { - const [profiles, setProfiles] = useState([]); + const [profiles, setProfiles] = useState([]); useEffect(() => { diff --git a/lib/LoadingSpinner.tsx b/lib/client/LoadingSpinner.tsx similarity index 100% rename from lib/LoadingSpinner.tsx rename to lib/client/LoadingSpinner.tsx diff --git a/lib/auth.ts b/lib/server/auth.ts similarity index 95% rename from lib/auth.ts rename to lib/server/auth.ts index 07171d09..af0fb10e 100644 --- a/lib/auth.ts +++ b/lib/server/auth.ts @@ -1,7 +1,7 @@ import type {NextAuthOptions} from "next-auth"; import {getServerSession} from "next-auth"; import {PrismaAdapter} from "@auth/prisma-adapter"; -import {prisma} from "@/lib/prisma"; +import {prisma} from "@/lib/server/prisma"; import GoogleProvider from "next-auth/providers/google"; import CredentialsProvider from "next-auth/providers/credentials"; import bcrypt from "bcryptjs"; diff --git a/lib/db-utils.ts b/lib/server/db-utils.ts similarity index 84% rename from lib/db-utils.ts rename to lib/server/db-utils.ts index 0b401845..3c808651 100644 --- a/lib/db-utils.ts +++ b/lib/server/db-utils.ts @@ -1,6 +1,6 @@ "use server"; -import {prisma} from "@/lib/prisma"; +import {prisma} from "@/lib/server/prisma"; export async function checkUserTableExists(): Promise { diff --git a/lib/prisma.ts b/lib/server/prisma.ts similarity index 100% rename from lib/prisma.ts rename to lib/server/prisma.ts diff --git a/lib/server/supabase.ts b/lib/server/supabase.ts new file mode 100644 index 00000000..550de1f8 --- /dev/null +++ b/lib/server/supabase.ts @@ -0,0 +1,8 @@ +"use server"; + +// import { createClient } from '@supabase/supabase-js'; +// +// export const supabase = createClient( +// process.env.NEXT_PUBLIC_SUPABASE_URL!, +// process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY! +// ); diff --git a/lib/supabase.ts b/lib/supabase.ts deleted file mode 100644 index 43488241..00000000 --- a/lib/supabase.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { createClient } from '@supabase/supabase-js'; - -export const supabase = createClient( - process.env.NEXT_PUBLIC_SUPABASE_URL!, - process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY! -); diff --git a/prisma/seed.ts b/prisma/seed.ts index fa63866b..6b99c3a2 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -1,4 +1,4 @@ -import {prisma} from "@/lib/prisma"; +import {prisma} from "@/lib/server/prisma"; async function main() {