UNPKG

wcz-layout

Version:

84 lines (68 loc) 1.9 kB
# file ## Client - Query: `fileMetasQueryOptions` `fileThumbnailQueryOptions` `fileQueryOptions` - Mutation: `downloadFileMutationOptions` `openFileMutationOptions` `updateFileMetaMutationOptions` `deleteFileMutationOptions` `batchDeleteFilesMutationOptions` `uploadFileMutationOptions` ## Server - Fetch: `getFileMetas` `getFileThumbnail` `getFile` `downloadFile`. - Mutate: `updateFileMeta` `deleteFile` `batchDeleteFiles` `uploadFile` ## Schemas/Models ```ts const FileMetaSchema = z.object({ id: z.uuid(), subId: z.uuid(), appName: z.string().trim().min(1).max(255), fileName: z.string().trim().min(1).max(255), fileExtension: z.string().trim().min(1).max(255), fileSize: z.number().min(0), mediaSubType: z.string().trim().min(1).max(255), mediaType: z.string().trim().min(1).max(255), mimeType: z.string().trim().min(1).max(255), createdBy: z.string().trim().min(1).max(255), createdDate: z.date(), }); const FileActionsSchema = z.object({ download: z.boolean().optional(), delete: z.boolean().optional(), }); const GetFileMetasSchema = z.object({ appName: z.string().min(1).max(255), subId: z.uuid(), }); const FileSchema = z.object({ appName: z.string().min(1).max(255), id: z.uuid(), }); const UpdateFileMetaSchema = FileMetaSchema.extend({ fileName: z.string().min(1).max(255), }); const UploadFileMetaSchema = z.object({ appName: z.string().min(1).max(255), subId: z.uuid(), file: z.instanceof(File), }); ``` ## Examples ```ts import { fileMetasQueryOptions, uploadFileMutationOptions } from "wcz-layout/data/client"; const { data: files = [] } = useQuery(fileMetasQueryOptions({ appName, subId })); // upload (isPending drives an indeterminate loading state — no % progress) const { mutate: upload, isPending } = useMutation(uploadFileMutationOptions()); upload({ appName, subId, file }); ```