wcz-layout
Version:
82 lines (66 loc) • 1.83 kB
Markdown
# 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 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 queryClient = useQueryClient();
const { data: files = [] } = useQuery(fileMetasQueryOptions({ appName, subId }));
// upload
const [progress, setProgress] = useState(0);
const { mutate: upload, isPending } = useMutation(uploadFileMutationOptions({ queryClient }));
upload({ appName, subId, file, setProgress });
```