pl-api: i was probably drunk while working on this

Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
nicole mikołajczyk
2025-07-07 13:26:03 +02:00
parent 0fb8c694c6
commit 1f29404579

View File

@ -1,26 +1,35 @@
import * as v from 'valibot';
import { bookmarkFolderSchema } from './bookmark-folder';
import { driveFileSchema } from './drive-file';
import { type DriveFile, driveFileSchema } from './drive-file';
import { filteredArray } from './utils';
/**
* @category Schemas
*/
const driveFolderSchema = v.pipe(v.any(), v.transform((folder) => ({
...folder,
parent_id: folder.parentId,
})), v.object({
const baseDriveFolderSchema = v.object({
id: v.fallback(v.nullable(v.string()), null),
name: v.fallback(v.nullable(v.string()), null),
parent_id: v.fallback(v.nullable(v.string()), null),
files: filteredArray(driveFileSchema),
folders: filteredArray(bookmarkFolderSchema),
}));
});
/**
* @category Schemas
*/
const driveFolderSchema: v.BaseSchema<any, DriveFolder, v.BaseIssue<unknown>> = v.pipe(v.any(), v.transform((folder) => ({
...folder,
parent_id: folder.parentId,
})), v.object({
...baseDriveFolderSchema.entries,
folders: filteredArray(v.lazy(() => driveFolderSchema)),
})) as any;
/**
* @category Entity types
*/
type DriveFolder = v.InferOutput<typeof driveFolderSchema>;
type DriveFolder = {
id: string | null;
name: string | null;
parent_id: string | null;
files: Array<DriveFile>;
folders: Array<DriveFolder>;
}
export { driveFolderSchema, type DriveFolder };