Aynı torrent hash'i için oluşturulan yeni loop işleri, mevcut aktif işleri otomatik olarak durdurur. Stop-by-hash endpoint'i tüm ilgili işleri durduracak şekilde güncellendi. TorrentTable bileşeni çoklu işleri doğru şekilde işleyecek ve profil adını en güncel aktif işten alacak şekilde yeniden yazıldı. LoopJob arayüzüne createdAt ve updatedAt alanları eklendi.
28 lines
752 B
TypeScript
28 lines
752 B
TypeScript
import { z } from "zod";
|
|
|
|
export const allowIpSchema = z
|
|
.string()
|
|
.ip({ version: "v4" })
|
|
.or(z.string().ip({ version: "v6" }));
|
|
|
|
export const loopStartSchema = z.object({
|
|
hash: z.string().min(1),
|
|
allowIp: allowIpSchema,
|
|
targetLoops: z.number().int().min(1).max(1000),
|
|
delayMs: z.number().int().min(0).max(86_400_000),
|
|
profileName: z.string().trim().min(1).max(64).optional(),
|
|
profileId: z.string().trim().min(1).optional(),
|
|
});
|
|
|
|
export const dryRunSchema = z.object({
|
|
hash: z.string().min(1),
|
|
allowIp: allowIpSchema,
|
|
});
|
|
|
|
export const profileSchema = z.object({
|
|
name: z.string().min(1).max(64),
|
|
allowIp: allowIpSchema,
|
|
delayMs: z.number().int().min(0).max(86_400_000),
|
|
targetLoops: z.number().int().min(1).max(1000),
|
|
});
|