Files
vps-tracker/packages/shared/src/contracts/vps.ts
T
DenozordecandCursor 11b67a1cef
Docker / build (push) Has been cancelled
feat: расширить инвентарь, ops и интеграции по roadmap
Добавлены bulk-операции VPS, карточка /vps/:id, CRUD проектов, Command Palette,
календарь продлений, webhooks, uptime-проверки, audit log, кастомные поля и адаптеры провайдеров.

Co-authored-by: Cursor <[email protected]>
2026-06-28 15:28:35 +07:00

42 lines
1.9 KiB
TypeScript

import { z } from 'zod'
export const vpsSchema = z.object({
id: z.string().optional(),
ip: z.string().optional().default(''),
ipv6: z.string().optional().default(''),
additionalIps: z.array(z.string()).optional().default([]),
dns: z.string().optional().default(''),
providerId: z.string().optional().default(''),
providerAccountId: z.string().optional().default(''),
country: z.string().optional().default(''),
city: z.string().optional().default(''),
datacenter: z.string().optional().default(''),
os: z.string().optional().default(''),
vcpu: z.coerce.number().optional().default(0),
ramGb: z.coerce.number().optional().default(0),
diskGb: z.coerce.number().optional().default(0),
diskType: z.string().optional().default(''),
virtualization: z.string().optional().default(''),
bandwidthTb: z.coerce.number().optional().default(0),
sshPort: z.coerce.number().optional().default(22),
rootUser: z.string().optional().default(''),
purpose: z.string().optional().default(''),
environment: z.string().optional().default(''),
project: z.string().optional().default(''),
projectId: z.string().optional().default(''),
monitoringEnabled: z.coerce.boolean().optional().default(false),
backupEnabled: z.coerce.boolean().optional().default(false),
status: z.string().optional().default('active'),
tariffType: z.string().optional().default(''),
currency: z.string().optional().default(''),
dailyRate: z.union([z.coerce.number(), z.literal('')]).optional(),
monthlyRate: z.union([z.coerce.number(), z.literal('')]).optional(),
createdAt: z.string().optional(),
paidUntil: z.string().optional().default(''),
notes: z.string().optional().default(''),
userOverrides: z.union([z.array(z.string()), z.literal('clear')]).optional(),
customData: z.union([z.string(), z.record(z.unknown())]).optional(),
})
export type VpsFormValues = z.infer<typeof vpsSchema>