pl-api: i was probably drunk while working on this
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
@ -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 };
|
||||
|
||||
Reference in New Issue
Block a user