@@ -2,24 +2,49 @@ import { serverSupabaseClient, serverSupabaseUser } from '#supabase/server';
22import { z } from 'zod' ;
33
44const Body = z . object ( {
5- id : z . string ( ) ,
5+ id : z . string ( ) . uuid ( ) ,
66} ) ;
77
88export default defineEventHandler ( async ( ev ) => {
99 const body = await readValidatedBody ( ev , Body . parse ) ;
10- // const user = await serverSupabaseUser(ev);
10+ const user = requiresLogin ( await serverSupabaseUser ( ev ) ) ;
1111 const supa = await serverSupabaseClient ( ev ) ;
1212
13- const taskOwner = await supa
14- . from ( 'tasks' )
15- . select ( '*' )
13+ // Verify ownership
14+ const owner = await supa
15+ . from ( 'topics' )
16+ . select ( 'owner' )
1617 . eq ( 'id' , body . id )
17- . single ( ) ;
18+ . limit ( 1 )
19+ . throwOnError ( ) ;
20+ if ( owner . data [ 0 ] ?. owner !== user . id )
21+ throw createError ( { status : 404 , message : 'Task not found' } ) ;
1822
19- if ( taskOwner . error ) {
20- console . error ( 'Error querying task owner:' , taskOwner . error ) ;
21- throw createError ( { status : 500 , message : 'Failed to query task owner' } ) ;
23+ // Query timeline_nodes for the given topic
24+ const timelineResponse = await supa
25+ . from ( 'timeline_nodes' )
26+ . select ( '*' )
27+ . eq ( 'topic_id' , body . id ) ;
28+ if ( timelineResponse . error ) {
29+ console . error ( 'Error querying timeline_nodes:' , timelineResponse . error ) ;
30+ throw createError ( { status : 500 , message : 'Failed to query timeline_nodes' } ) ;
2231 }
23-
24- // todo
32+
33+ // Query tasks for the given topic
34+ const tasksResponse = await supa
35+ . from ( 'tasks' )
36+ . select ( '*' )
37+ . eq ( 'topic_id' , body . id )
38+ . throwOnError ( ) ;
39+
40+ // Concatenate timeline_nodes and tasks info
41+ const timelineText = timelineResponse . data
42+ . map ( ( node : any ) => `${ node . title } : ${ node . description } ` )
43+ . join ( '\n' ) ;
44+ const tasksText = tasksResponse . data
45+ . map ( ( task : any ) => `${ task . title } : ${ task . description } (Status: ${ task . status } )` )
46+ . join ( '\n' ) ;
47+ const contentForDeepseek = timelineText + '\n' + tasksText ;
48+
49+ return contentForDeepseek ;
2550} ) ;
0 commit comments