first commit

This commit is contained in:
Mathieu BOURBON
2026-04-18 16:24:44 +02:00
commit fbb6138c28
72 changed files with 3509 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
import { z } from 'zod';
// Regex basique IPv4 ; on peut étendre à IPv6 avec la lib `ip-address`
const ipv4Regex = /^(25[0-5]|2[0-4]\d|[01]?\d\d?)(\.(25[0-5]|2[0-4]\d|[01]?\d\d?)){3}$/;
export const hostStatusSchema = z.enum(['UP', 'DOWN', 'UNKNOWN']);
export const hostSourceSchema = z.enum(['MANUAL', 'DISCOVERED', 'IMPORTED']);
export const createHostSchema = z.object({
ipAddress: z.string().regex(ipv4Regex, 'IP invalide (IPv4 attendu)'),
hostname: z.string().min(1).max(255).optional(),
macAddress: z
.string()
.regex(/^([0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$/, 'MAC invalide')
.optional(),
description: z.string().max(2000).optional(),
networkId: z.string().cuid().optional(),
status: hostStatusSchema.optional(),
source: hostSourceSchema.optional(),
vendor: z.string().optional(),
osGuess: z.string().optional(),
});
export const updateHostSchema = createHostSchema.partial();
export type CreateHostInput = z.infer<typeof createHostSchema>;
export type UpdateHostInput = z.infer<typeof updateHostSchema>;