1- import { eq } from "drizzle-orm" ;
21import { z } from "zod" ;
32
4- import { db } from "~/server/db" ;
53import {
6- files_table as fileSchema ,
7- folders_table as folderSchema ,
8- } from "~/server/db/schema" ;
4+ getAllFiles ,
5+ getAllFolders ,
6+ getAllParentsForFolder ,
7+ } from "~/server/db/queries" ;
98
109import DriveContents from "../../drive-contents" ;
1110
12- async function getAllParents ( folderId : number ) {
13- const parents = [ ] ;
14- let currentId : number | null = folderId ;
15- while ( currentId != null ) {
16- const folders = await db
17- . selectDistinct ( )
18- . from ( folderSchema )
19- . where ( eq ( folderSchema . id , currentId ) ) ;
20-
21- if ( ! folders [ 0 ] ) throw new Error ( "parent folder not found" ) ;
22-
23- parents . unshift ( folders [ 0 ] ) ;
24- currentId = folders [ 0 ] ?. parent ; // parent can be null
25- }
26-
27- return parents ;
28- }
29-
3011export default async function GoogleDriveClone ( props : {
3112 params : Promise < { folderId : number } > ;
3213} ) {
@@ -38,21 +19,11 @@ export default async function GoogleDriveClone(props: {
3819 if ( ! success ) return < div > Invalid Folder ID</ div > ;
3920
4021 const folderId = data . folderId ;
41- const parentsPromise = getAllParents ( folderId ) ;
42-
43- const foldersPromise = db
44- . select ( )
45- . from ( folderSchema )
46- . where ( eq ( folderSchema . parent , folderId ) ) ;
47- const filesPromise = db
48- . select ( )
49- . from ( fileSchema )
50- . where ( eq ( fileSchema . parent , folderId ) ) ;
5122
5223 const [ folders , files , parents ] = await Promise . all ( [
53- foldersPromise ,
54- filesPromise ,
55- parentsPromise ,
24+ getAllFolders ( folderId ) ,
25+ getAllFiles ( folderId ) ,
26+ getAllParentsForFolder ( folderId ) ,
5627 ] ) ;
5728
5829 return < DriveContents folders = { folders } files = { files } parents = { parents } /> ;
0 commit comments