wcz-layout
Version:
86 lines (70 loc) • 1.89 kB
Markdown
# file
## Client
- Query:
`fileMetasQueryOptions`
`fileThumbnailQueryOptions`
`fileQueryOptions`
- Mutation:
`downloadFileMutationOptions`
`openFileMutationOptions`
`updateFileMetaMutationOptions`
`deleteFileMutationOptions`
`batchDeleteFilesMutationOptions`
- Hooks:
`useUploadFile`
## 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 } from "wcz-layout/data/client";
import { uploadFile } from "wcz-layout/data/server";
// client
const { data: files = [] } = useQuery(fileMetasQueryOptions({ appName, subId }));
// server
await uploadFile({ data: { appName, subId, file } });
```