1- import { eq } from "drizzle-orm" ;
21import { z } from "zod" ;
32
4- import { db } from "~/server/db" ;
5- import {
6- files as fileSchema ,
7- folders as folderSchema ,
8- } from "~/server/db/schema" ;
3+ import * as queries from "~/server/db/queries" ;
94
105import DriveContents from "../../drive-contents" ;
116
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-
307export default async function GoogleDriveClone ( props : {
318 params : Promise < { folderId : number } > ;
329} ) {
@@ -37,22 +14,10 @@ export default async function GoogleDriveClone(props: {
3714
3815 if ( ! success ) return < div > Invalid Folder ID</ div > ;
3916
40- 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 ) ) ;
51-
5217 const [ folders , files , parents ] = await Promise . all ( [
53- foldersPromise ,
54- filesPromise ,
55- parentsPromise ,
18+ queries . getAllFolders ( data . folderId ) ,
19+ queries . getAllFiles ( data . folderId ) ,
20+ queries . getAllParentsForFolder ( data . folderId ) ,
5621 ] ) ;
5722
5823 return < DriveContents folders = { folders } files = { files } parents = { parents } /> ;
0 commit comments