diff --git a/src/hooks.server.ts b/src/hooks.server.ts index c583af0..ebb160d 100755 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -1,9 +1,9 @@ // src/hooks.server.ts - import type { Handle } from '@sveltejs/kit'; import jwt from 'jsonwebtoken'; +import { JWT_SECRET } from '$env/static/private'; -const SECRET_KEY = 'my_secret_key'; // 실제 운영 시 .env 파일에 보관 +const SECRET_KEY = JWT_SECRET; export const handle: Handle = async ({ event, resolve }) => { const token = event.cookies.get('session'); @@ -26,4 +26,3 @@ export const handle: Handle = async ({ event, resolve }) => { response.headers.set('Cross-Origin-Embedder-Policy', 'require-corp'); return response; }; - diff --git a/src/routes/(protected)/bigdata-generate/+page.server.ts b/src/routes/(protected)/bigdata-generate/+page.server.ts index 08edb20..de802c9 100755 --- a/src/routes/(protected)/bigdata-generate/+page.server.ts +++ b/src/routes/(protected)/bigdata-generate/+page.server.ts @@ -1,22 +1,52 @@ -// ======================================================================= -// src/routes/+page.server.ts (확장자 변경 및 타입 추가) -// ======================================================================= +// src/routes/(protected)/bigdata-generate/+page.server.ts + import pool from '$lib/server/database'; import type { PageServerLoad } from './$types'; -export const load: PageServerLoad = async () => { - try { - const result = await pool.query<{ IndexMovie: number }>( - 'SELECT DISTINCT "IndexMovie" FROM public."TumerDatasetRef" ORDER BY "IndexMovie" ASC' - ); - return { - movies: result.rows.map(row => row.IndexMovie) - }; - } catch (error) { - console.error("Failed to load initial movies", error); - return { - movies: [], - error: "데이터베이스에서 영화 목록을 가져오는 데 실패했습니다." - }; - } +export const load: PageServerLoad = async (event) => { + const { user } = await event.parent(); + // console.log('Parent로부터 받은 사용자 정보:', user); // 디버깅 완료 후 주석 처리 + + let myMovies: number[] = []; + let allMovies: number[] = []; + let error: string | null = null; + + try { + // "전체" 목록 쿼리 (정상) + const allResult = await pool.query<{ IndexMovie: number }>( + 'SELECT DISTINCT "IndexMovie" FROM public."TumerDatasetRef" ORDER BY "IndexMovie" ASC' + ); + allMovies = allResult.rows.map((row) => row.IndexMovie); + + + if (user && user.workerId) { + // ▼▼▼ [ "내" 목록 쿼리 수정 ] ▼▼▼ + + // 2-1. 타입을 올바른 컬럼명 "Index"로 수정 + const myResult = await pool.query<{ Index: number }>( + // 2-2. 쿼리는 "Index" 컬럼을 SELECT (정상) + 'SELECT DISTINCT "Index" FROM public."TumerMovie" WHERE "WorkerID" = $1 ORDER BY "Index" ASC', + [user.workerId] + ); + + // 2-3. 매핑을 "row.IndexMovie"가 아닌 "row.Index"로 수정 + myMovies = myResult.rows.map((row) => row.Index); + + // ▲▲▲ [ 수정 완료 ] ▲▲▲ + } else { + console.warn('user.workerId를 찾을 수 없거나 user가 null입니다.', user); + } + + return { + allMovies, + myMovies + }; + } catch (dbError: any) { + console.error('Failed to load movie lists', dbError); + return { + allMovies: [], + myMovies: [], + error: dbError.message || '데이터베이스에서 영화 목록을 가져오는 데 실패했습니다.' + }; + } }; \ No newline at end of file diff --git a/src/routes/(protected)/bigdata-generate/+page.svelte b/src/routes/(protected)/bigdata-generate/+page.svelte index 37d37c4..9ef9145 100755 --- a/src/routes/(protected)/bigdata-generate/+page.svelte +++ b/src/routes/(protected)/bigdata-generate/+page.svelte @@ -1,3 +1,5 @@ + +