mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-07 12:30:12 +02:00
251 lines
5.0 KiB
TypeScript
251 lines
5.0 KiB
TypeScript
import { ServerPermissionType, ServerType } from '@prisma/client';
|
|
import { z } from 'zod';
|
|
import { idValidation } from './shared.validation';
|
|
|
|
const detail = {
|
|
body: z.object({}),
|
|
params: z.object({ ...idValidation('serverId') }),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const list = {
|
|
body: z.object({}),
|
|
params: z.object({}),
|
|
query: z.object({ enabled: z.string().optional() }),
|
|
};
|
|
|
|
const deleteServer = {
|
|
body: z.object({}),
|
|
params: z.object({ ...idValidation('serverId') }),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const update = {
|
|
body: z.object({
|
|
legacy: z.boolean().optional(),
|
|
name: z.string().optional(),
|
|
noCredential: z.boolean().optional(),
|
|
password: z.string().optional(),
|
|
type: z.nativeEnum(ServerType),
|
|
url: z.string().optional(),
|
|
username: z.string().optional(),
|
|
}),
|
|
params: z.object({ ...idValidation('serverId') }),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const create = {
|
|
body: z.object({
|
|
legacy: z.boolean().optional(),
|
|
name: z.string(),
|
|
noCredential: z.boolean().optional(),
|
|
password: z.string(),
|
|
type: z.enum([
|
|
ServerType.JELLYFIN,
|
|
ServerType.SUBSONIC,
|
|
ServerType.NAVIDROME,
|
|
]),
|
|
url: z.string(),
|
|
username: z.string(),
|
|
}),
|
|
params: z.object({}),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const scan = {
|
|
body: z.object({ serverFolderId: z.string().array().optional() }),
|
|
params: z.object({ ...idValidation('serverId') }),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const refresh = {
|
|
body: z.object({}),
|
|
params: z.object({ ...idValidation('serverId') }),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const createCredential = {
|
|
body: z.object({ credential: z.string(), username: z.string() }),
|
|
params: z.object({ ...idValidation('serverId') }),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const getCredentialDetail = {
|
|
body: z.object({}),
|
|
params: z.object({ ...idValidation('serverId') }),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const deleteCredential = {
|
|
body: z.object({}),
|
|
params: z.object({
|
|
...idValidation('serverId'),
|
|
...idValidation('credentialId'),
|
|
}),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const enableCredential = {
|
|
body: z.object({}),
|
|
params: z.object({
|
|
...idValidation('serverId'),
|
|
...idValidation('credentialId'),
|
|
}),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const disableCredential = {
|
|
body: z.object({}),
|
|
params: z.object({
|
|
...idValidation('serverId'),
|
|
...idValidation('credentialId'),
|
|
}),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const createUrl = {
|
|
body: z.object({ url: z.string() }),
|
|
params: z.object({ ...idValidation('serverId') }),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const deleteUrl = {
|
|
body: z.object({}),
|
|
params: z.object({
|
|
...idValidation('serverId'),
|
|
...idValidation('urlId'),
|
|
}),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const enableUrl = {
|
|
body: z.object({}),
|
|
params: z.object({
|
|
...idValidation('serverId'),
|
|
...idValidation('urlId'),
|
|
}),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const disableUrl = {
|
|
body: z.object({}),
|
|
params: z.object({
|
|
...idValidation('serverId'),
|
|
...idValidation('urlId'),
|
|
}),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const deleteFolder = {
|
|
body: z.object({}),
|
|
params: z.object({
|
|
...idValidation('serverId'),
|
|
...idValidation('folderId'),
|
|
}),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const enableFolder = {
|
|
body: z.object({}),
|
|
params: z.object({
|
|
...idValidation('serverId'),
|
|
...idValidation('folderId'),
|
|
}),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const disableFolder = {
|
|
body: z.object({}),
|
|
params: z.object({
|
|
...idValidation('serverId'),
|
|
...idValidation('folderId'),
|
|
}),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const addServerPermission = {
|
|
body: z.object({
|
|
type: z.enum([
|
|
ServerPermissionType.ADMIN,
|
|
ServerPermissionType.VIEWER,
|
|
ServerPermissionType.EDITOR,
|
|
]),
|
|
userId: z.string().uuid(),
|
|
}),
|
|
params: z.object({
|
|
...idValidation('serverId'),
|
|
}),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const updateServerPermission = {
|
|
body: z.object({
|
|
type: z.enum([
|
|
ServerPermissionType.ADMIN,
|
|
ServerPermissionType.VIEWER,
|
|
ServerPermissionType.EDITOR,
|
|
]),
|
|
}),
|
|
params: z.object({
|
|
...idValidation('serverId'),
|
|
...idValidation('permissionId'),
|
|
}),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const deleteServerPermission = {
|
|
body: z.object({}),
|
|
params: z.object({
|
|
...idValidation('serverId'),
|
|
}),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const addServerFolderPermission = {
|
|
body: z.object({
|
|
userId: z.string().uuid(),
|
|
}),
|
|
params: z.object({
|
|
...idValidation('serverId'),
|
|
...idValidation('folderId'),
|
|
}),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const deleteServerFolderPermission = {
|
|
body: z.object({}),
|
|
params: z.object({
|
|
...idValidation('serverId'),
|
|
...idValidation('folderId'),
|
|
...idValidation('folderPermissionId'),
|
|
}),
|
|
query: z.object({}),
|
|
};
|
|
|
|
export const serversValidation = {
|
|
addServerFolderPermission,
|
|
addServerPermission,
|
|
create,
|
|
createCredential,
|
|
createUrl,
|
|
deleteCredential,
|
|
deleteFolder,
|
|
deleteServer,
|
|
deleteServerFolderPermission,
|
|
deleteServerPermission,
|
|
deleteUrl,
|
|
detail,
|
|
disableCredential,
|
|
disableFolder,
|
|
disableUrl,
|
|
enableCredential,
|
|
enableFolder,
|
|
enableUrl,
|
|
getCredentialDetail,
|
|
list,
|
|
refresh,
|
|
scan,
|
|
update,
|
|
updateServerPermission,
|
|
};
|