mirror of
https://github.com/crocofied/CoreControl.git
synced 2025-12-18 16:07:10 +00:00
Server Hardware Information
This commit is contained in:
parent
d10b88ac78
commit
1581cf957a
@ -6,6 +6,11 @@ interface AddRequest {
|
|||||||
os: string;
|
os: string;
|
||||||
ip: string;
|
ip: string;
|
||||||
url: string;
|
url: string;
|
||||||
|
cpu: string;
|
||||||
|
gpu: string;
|
||||||
|
ram: string;
|
||||||
|
disk: string;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const prisma = new PrismaClient();
|
const prisma = new PrismaClient();
|
||||||
@ -13,7 +18,7 @@ const prisma = new PrismaClient();
|
|||||||
export async function POST(request: NextRequest) {
|
export async function POST(request: NextRequest) {
|
||||||
try {
|
try {
|
||||||
const body: AddRequest = await request.json();
|
const body: AddRequest = await request.json();
|
||||||
const { name, os, ip, url } = body;
|
const { name, os, ip, url, cpu, gpu, ram, disk } = body;
|
||||||
|
|
||||||
const server = await prisma.server.create({
|
const server = await prisma.server.create({
|
||||||
data: {
|
data: {
|
||||||
@ -21,6 +26,10 @@ export async function POST(request: NextRequest) {
|
|||||||
os,
|
os,
|
||||||
ip,
|
ip,
|
||||||
url,
|
url,
|
||||||
|
cpu,
|
||||||
|
gpu,
|
||||||
|
ram,
|
||||||
|
disk
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -7,6 +7,10 @@ interface EditRequest {
|
|||||||
os: string;
|
os: string;
|
||||||
ip: string;
|
ip: string;
|
||||||
url: string;
|
url: string;
|
||||||
|
cpu: string;
|
||||||
|
gpu: string;
|
||||||
|
ram: string;
|
||||||
|
disk: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const prisma = new PrismaClient();
|
const prisma = new PrismaClient();
|
||||||
@ -14,7 +18,7 @@ const prisma = new PrismaClient();
|
|||||||
export async function PUT(request: NextRequest) {
|
export async function PUT(request: NextRequest) {
|
||||||
try {
|
try {
|
||||||
const body: EditRequest = await request.json();
|
const body: EditRequest = await request.json();
|
||||||
const { id, name, os, ip, url } = body;
|
const { id, name, os, ip, url, cpu, gpu, ram, disk } = body;
|
||||||
|
|
||||||
const existingServer = await prisma.server.findUnique({ where: { id } });
|
const existingServer = await prisma.server.findUnique({ where: { id } });
|
||||||
if (!existingServer) {
|
if (!existingServer) {
|
||||||
@ -23,7 +27,16 @@ export async function PUT(request: NextRequest) {
|
|||||||
|
|
||||||
const updatedServer = await prisma.server.update({
|
const updatedServer = await prisma.server.update({
|
||||||
where: { id },
|
where: { id },
|
||||||
data: { name, os, ip, url }
|
data: {
|
||||||
|
name,
|
||||||
|
os,
|
||||||
|
ip,
|
||||||
|
url,
|
||||||
|
cpu,
|
||||||
|
gpu,
|
||||||
|
ram,
|
||||||
|
disk
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return NextResponse.json({ message: "Server updated", server: updatedServer });
|
return NextResponse.json({ message: "Server updated", server: updatedServer });
|
||||||
|
|||||||
@ -16,7 +16,7 @@ import {
|
|||||||
SidebarTrigger,
|
SidebarTrigger,
|
||||||
} from "@/components/ui/sidebar"
|
} from "@/components/ui/sidebar"
|
||||||
import { Button } from "@/components/ui/button"
|
import { Button } from "@/components/ui/button"
|
||||||
import { Plus, Link, MonitorCog, FileDigit, Trash2, LayoutGrid, List, Pencil } from "lucide-react"
|
import { Plus, Link, MonitorCog, FileDigit, Trash2, LayoutGrid, List, Pencil, Cpu, Microchip, MemoryStick, HardDrive } from "lucide-react"
|
||||||
import {
|
import {
|
||||||
Card,
|
Card,
|
||||||
CardContent,
|
CardContent,
|
||||||
@ -63,12 +63,18 @@ import {
|
|||||||
import Cookies from "js-cookie";
|
import Cookies from "js-cookie";
|
||||||
import { useState, useEffect } from "react";
|
import { useState, useEffect } from "react";
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
|
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
|
||||||
|
|
||||||
export default function Dashboard() {
|
export default function Dashboard() {
|
||||||
const [name, setName] = useState("");
|
const [name, setName] = useState("");
|
||||||
const [os, setOs] = useState("");
|
const [os, setOs] = useState("");
|
||||||
const [ip, setIp] = useState("");
|
const [ip, setIp] = useState("");
|
||||||
const [url, setUrl] = useState("");
|
const [url, setUrl] = useState("");
|
||||||
|
const [cpu, setCpu] = useState("");
|
||||||
|
const [gpu, setGpu] = useState("");
|
||||||
|
const [ram, setRam] = useState("");
|
||||||
|
const [disk, setDisk] = useState("");
|
||||||
|
|
||||||
const [currentPage, setCurrentPage] = useState(1);
|
const [currentPage, setCurrentPage] = useState(1);
|
||||||
const [maxPage, setMaxPage] = useState(1);
|
const [maxPage, setMaxPage] = useState(1);
|
||||||
const [servers, setServers] = useState([]);
|
const [servers, setServers] = useState([]);
|
||||||
@ -81,6 +87,10 @@ export default function Dashboard() {
|
|||||||
const [editOs, setEditOs] = useState("");
|
const [editOs, setEditOs] = useState("");
|
||||||
const [editIp, setEditIp] = useState("");
|
const [editIp, setEditIp] = useState("");
|
||||||
const [editUrl, setEditUrl] = useState("");
|
const [editUrl, setEditUrl] = useState("");
|
||||||
|
const [editCpu, setEditCpu] = useState("");
|
||||||
|
const [editGpu, setEditGpu] = useState("");
|
||||||
|
const [editRam, setEditRam] = useState("");
|
||||||
|
const [editDisk, setEditDisk] = useState("");
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -100,7 +110,7 @@ export default function Dashboard() {
|
|||||||
|
|
||||||
const add = async () => {
|
const add = async () => {
|
||||||
try {
|
try {
|
||||||
const response = await axios.post('/api/servers/add', { name, os, ip, url });
|
const response = await axios.post('/api/servers/add', { name, os, ip, url, cpu, gpu, ram, disk });
|
||||||
getServers();
|
getServers();
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.log(error.response.data);
|
console.log(error.response.data);
|
||||||
@ -112,6 +122,7 @@ export default function Dashboard() {
|
|||||||
setLoading(true);
|
setLoading(true);
|
||||||
const response = await axios.post('/api/servers/get', { page: currentPage });
|
const response = await axios.post('/api/servers/get', { page: currentPage });
|
||||||
setServers(response.data.servers);
|
setServers(response.data.servers);
|
||||||
|
console.log(response.data.servers)
|
||||||
setMaxPage(response.data.maxPage);
|
setMaxPage(response.data.maxPage);
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
@ -146,7 +157,11 @@ export default function Dashboard() {
|
|||||||
setEditOs(server.os);
|
setEditOs(server.os);
|
||||||
setEditIp(server.ip);
|
setEditIp(server.ip);
|
||||||
setEditUrl(server.url);
|
setEditUrl(server.url);
|
||||||
}
|
setEditCpu(server.cpu);
|
||||||
|
setEditGpu(server.gpu);
|
||||||
|
setEditRam(server.ram);
|
||||||
|
setEditDisk(server.disk);
|
||||||
|
};
|
||||||
|
|
||||||
const edit = async () => {
|
const edit = async () => {
|
||||||
try {
|
try {
|
||||||
@ -155,7 +170,11 @@ export default function Dashboard() {
|
|||||||
name: editName,
|
name: editName,
|
||||||
os: editOs,
|
os: editOs,
|
||||||
ip: editIp,
|
ip: editIp,
|
||||||
url: editUrl
|
url: editUrl,
|
||||||
|
cpu: editCpu,
|
||||||
|
gpu: editGpu,
|
||||||
|
ram: editRam,
|
||||||
|
disk: editDisk
|
||||||
});
|
});
|
||||||
getServers();
|
getServers();
|
||||||
setEditId(null);
|
setEditId(null);
|
||||||
@ -225,42 +244,70 @@ export default function Dashboard() {
|
|||||||
<AlertDialogHeader>
|
<AlertDialogHeader>
|
||||||
<AlertDialogTitle>Add an server</AlertDialogTitle>
|
<AlertDialogTitle>Add an server</AlertDialogTitle>
|
||||||
<AlertDialogDescription>
|
<AlertDialogDescription>
|
||||||
<div className="space-y-4 pt-4">
|
<Tabs defaultValue="general" className="w-full">
|
||||||
<div className="grid w-full items-center gap-1.5">
|
<TabsList className="w-full">
|
||||||
<Label htmlFor="name">Name</Label>
|
<TabsTrigger value="general">General</TabsTrigger>
|
||||||
<Input id="name" type="text" placeholder="e.g. Server1" onChange={(e) => setName(e.target.value)}/>
|
<TabsTrigger value="hardware">Hardware</TabsTrigger>
|
||||||
|
</TabsList>
|
||||||
|
<TabsContent value="general">
|
||||||
|
<div className="space-y-4 pt-4">
|
||||||
|
<div className="grid w-full items-center gap-1.5">
|
||||||
|
<Label htmlFor="name">Name</Label>
|
||||||
|
<Input id="name" type="text" placeholder="e.g. Server1" onChange={(e) => setName(e.target.value)}/>
|
||||||
|
</div>
|
||||||
|
<div className="grid w-full items-center gap-1.5">
|
||||||
|
<Label htmlFor="description">Operating System <span className="text-stone-600">(optional)</span></Label>
|
||||||
|
<Select onValueChange={(value) => setOs(value)}>
|
||||||
|
<SelectTrigger className="w-full">
|
||||||
|
<SelectValue placeholder="Select OS" />
|
||||||
|
</SelectTrigger>
|
||||||
|
<SelectContent>
|
||||||
|
<SelectItem value="Windows">Windows</SelectItem>
|
||||||
|
<SelectItem value="Linux">Linux</SelectItem>
|
||||||
|
<SelectItem value="MacOS">MacOS</SelectItem>
|
||||||
|
</SelectContent>
|
||||||
|
</Select>
|
||||||
|
</div>
|
||||||
|
<div className="grid w-full items-center gap-1.5">
|
||||||
|
<Label htmlFor="icon">IP Adress <span className="text-stone-600">(optional)</span></Label>
|
||||||
|
<Input id="icon" type="text" placeholder="e.g. 192.168.100.2" onChange={(e) => setIp(e.target.value)}/>
|
||||||
|
</div>
|
||||||
|
<div className="grid w-full items-center gap-1.5">
|
||||||
|
<TooltipProvider>
|
||||||
|
<Tooltip>
|
||||||
|
<TooltipTrigger>
|
||||||
|
<Label htmlFor="publicURL">Management URL <span className="text-stone-600">(optional)</span></Label>
|
||||||
|
</TooltipTrigger>
|
||||||
|
<TooltipContent>
|
||||||
|
Link to a web interface (e.g. Proxmox or Portainer) with which the server can be managed
|
||||||
|
</TooltipContent>
|
||||||
|
</Tooltip>
|
||||||
|
</TooltipProvider>
|
||||||
|
<Input id="publicURL" type="text" placeholder="e.g. https://proxmox.server1.com" onChange={(e) => setUrl(e.target.value)}/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="grid w-full items-center gap-1.5">
|
</TabsContent>
|
||||||
<Label htmlFor="description">Operating System <span className="text-stone-600">(optional)</span></Label>
|
<TabsContent value="hardware">
|
||||||
<Select onValueChange={(value) => setOs(value)}>
|
<div className="space-y-4 pt-4">
|
||||||
<SelectTrigger className="w-full">
|
<div className="grid w-full items-center gap-1.5">
|
||||||
<SelectValue placeholder="Select OS" />
|
<Label htmlFor="name">CPU <span className="text-stone-600">(optional)</span></Label>
|
||||||
</SelectTrigger>
|
<Input id="name" type="text" placeholder="e.g. AMD Ryzen™ 7 7800X3D" onChange={(e) => setCpu(e.target.value)}/>
|
||||||
<SelectContent>
|
</div>
|
||||||
<SelectItem value="Windows">Windows</SelectItem>
|
<div className="grid w-full items-center gap-1.5">
|
||||||
<SelectItem value="Linux">Linux</SelectItem>
|
<Label htmlFor="name">GPU <span className="text-stone-600">(optional)</span></Label>
|
||||||
<SelectItem value="MacOS">MacOS</SelectItem>
|
<Input id="name" type="text" placeholder="e.g. AMD Radeon™ Graphics" onChange={(e) => setGpu(e.target.value)}/>
|
||||||
</SelectContent>
|
</div>
|
||||||
</Select>
|
<div className="grid w-full items-center gap-1.5">
|
||||||
|
<Label htmlFor="name">RAM <span className="text-stone-600">(optional)</span></Label>
|
||||||
|
<Input id="name" type="text" placeholder="e.g. 64GB DDR5" onChange={(e) => setRam(e.target.value)}/>
|
||||||
|
</div>
|
||||||
|
<div className="grid w-full items-center gap-1.5">
|
||||||
|
<Label htmlFor="name">Disk <span className="text-stone-600">(optional)</span></Label>
|
||||||
|
<Input id="name" type="text" placeholder="e.g. 2TB SSD" onChange={(e) => setDisk(e.target.value)}/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="grid w-full items-center gap-1.5">
|
</TabsContent>
|
||||||
<Label htmlFor="icon">IP Adress <span className="text-stone-600">(optional)</span></Label>
|
</Tabs>
|
||||||
<Input id="icon" type="text" placeholder="e.g. 192.168.100.2" onChange={(e) => setIp(e.target.value)}/>
|
|
||||||
</div>
|
|
||||||
<div className="grid w-full items-center gap-1.5">
|
|
||||||
<TooltipProvider>
|
|
||||||
<Tooltip>
|
|
||||||
<TooltipTrigger>
|
|
||||||
<Label htmlFor="publicURL">Management URL <span className="text-stone-600">(optional)</span></Label>
|
|
||||||
</TooltipTrigger>
|
|
||||||
<TooltipContent>
|
|
||||||
Link to a web interface (e.g. Proxmox or Portainer) with which the server can be managed
|
|
||||||
</TooltipContent>
|
|
||||||
</Tooltip>
|
|
||||||
</TooltipProvider>
|
|
||||||
<Input id="publicURL" type="text" placeholder="e.g. https://proxmox.server1.com" onChange={(e) => setUrl(e.target.value)}/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</AlertDialogDescription>
|
</AlertDialogDescription>
|
||||||
</AlertDialogHeader>
|
</AlertDialogHeader>
|
||||||
<AlertDialogFooter>
|
<AlertDialogFooter>
|
||||||
@ -286,18 +333,39 @@ export default function Dashboard() {
|
|||||||
<CardHeader>
|
<CardHeader>
|
||||||
<div className="flex items-center justify-between w-full">
|
<div className="flex items-center justify-between w-full">
|
||||||
<div className="flex items-center">
|
<div className="flex items-center">
|
||||||
<div className="ml-4">
|
<div className="ml-4">
|
||||||
<CardTitle className="text-2xl font-bold">{server.name}</CardTitle>
|
<CardTitle className="text-2xl font-bold">{server.name}</CardTitle>
|
||||||
<CardDescription className="text-sm space-y-1 mt-1">
|
<CardDescription className={`text-sm mt-1 grid gap-y-1 ${isGridLayout ? "grid-cols-1" : "grid-cols-2 gap-x-4"}`}>
|
||||||
<div className="flex items-center gap-2 text-foreground/80">
|
<div className="flex items-center gap-2 text-foreground/80">
|
||||||
<MonitorCog className="h-4 w-4 text-muted-foreground" />
|
<MonitorCog className="h-4 w-4 text-muted-foreground" />
|
||||||
<span>OS: {server.os || '-'}</span>
|
<span><b>OS:</b> {server.os || '-'}</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center gap-2 text-foreground/80">
|
<div className="flex items-center gap-2 text-foreground/80">
|
||||||
<FileDigit className="h-4 w-4 text-muted-foreground" />
|
<FileDigit className="h-4 w-4 text-muted-foreground" />
|
||||||
<span>IP: {server.ip || 'Nicht angegeben'}</span>
|
<span><b>IP:</b> {server.ip || 'Nicht angegeben'}</span>
|
||||||
</div>
|
</div>
|
||||||
</CardDescription>
|
|
||||||
|
<div className="col-span-full pt-2 pb-2">
|
||||||
|
<Separator />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex items-center gap-2 text-foreground/80">
|
||||||
|
<Cpu className="h-4 w-4 text-muted-foreground" />
|
||||||
|
<span><b>CPU:</b> {server.cpu || '-'}</span>
|
||||||
|
</div>
|
||||||
|
<div className="flex items-center gap-2 text-foreground/80">
|
||||||
|
<Microchip className="h-4 w-4 text-muted-foreground" />
|
||||||
|
<span><b>GPU:</b> {server.gpu || '-'}</span>
|
||||||
|
</div>
|
||||||
|
<div className="flex items-center gap-2 text-foreground/80">
|
||||||
|
<MemoryStick className="h-4 w-4 text-muted-foreground" />
|
||||||
|
<span><b>RAM:</b> {server.ram || '-'}</span>
|
||||||
|
</div>
|
||||||
|
<div className="flex items-center gap-2 text-foreground/80">
|
||||||
|
<HardDrive className="h-4 w-4 text-muted-foreground" />
|
||||||
|
<span><b>Disk:</b> {server.disk || '-'}</span>
|
||||||
|
</div>
|
||||||
|
</CardDescription>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col items-end justify-start space-y-2 w-[405px]">
|
<div className="flex flex-col items-end justify-start space-y-2 w-[405px]">
|
||||||
@ -334,19 +402,15 @@ export default function Dashboard() {
|
|||||||
</AlertDialogTrigger>
|
</AlertDialogTrigger>
|
||||||
<AlertDialogContent>
|
<AlertDialogContent>
|
||||||
<AlertDialogHeader>
|
<AlertDialogHeader>
|
||||||
<AlertDialogTitle>Server bearbeiten</AlertDialogTitle>
|
<AlertDialogTitle>Edit Server</AlertDialogTitle>
|
||||||
<AlertDialogDescription>
|
<AlertDialogDescription>
|
||||||
<div className="space-y-4 pt-4">
|
<Tabs defaultValue="general" className="w-full">
|
||||||
<div className="grid w-full items-center gap-1.5">
|
<TabsList className="w-full">
|
||||||
<Label htmlFor="editName">Name</Label>
|
<TabsTrigger value="general">General</TabsTrigger>
|
||||||
<Input
|
<TabsTrigger value="hardware">Hardware</TabsTrigger>
|
||||||
id="editName"
|
</TabsList>
|
||||||
type="text"
|
<TabsContent value="general">
|
||||||
placeholder="e.g. Server1"
|
<div className="space-y-4 pt-4">
|
||||||
value={editName}
|
|
||||||
onChange={(e) => setEditName(e.target.value)}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div className="grid w-full items-center gap-1.5">
|
<div className="grid w-full items-center gap-1.5">
|
||||||
<Label htmlFor="editOs">Operating System</Label>
|
<Label htmlFor="editOs">Operating System</Label>
|
||||||
<Select
|
<Select
|
||||||
@ -384,13 +448,52 @@ export default function Dashboard() {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</AlertDialogDescription>
|
</TabsContent>
|
||||||
</AlertDialogHeader>
|
|
||||||
<AlertDialogFooter>
|
<TabsContent value="hardware">
|
||||||
<AlertDialogCancel>Cancel</AlertDialogCancel>
|
<div className="space-y-4 pt-4">
|
||||||
<Button onClick={edit}>Save</Button>
|
<div className="grid w-full items-center gap-1.5">
|
||||||
</AlertDialogFooter>
|
<Label htmlFor="editCpu">CPU</Label>
|
||||||
</AlertDialogContent>
|
<Input
|
||||||
|
id="editCpu"
|
||||||
|
value={editCpu}
|
||||||
|
onChange={(e) => setEditCpu(e.target.value)}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="grid w-full items-center gap-1.5">
|
||||||
|
<Label htmlFor="editGpu">GPU</Label>
|
||||||
|
<Input
|
||||||
|
id="editGpu"
|
||||||
|
value={editGpu}
|
||||||
|
onChange={(e) => setEditGpu(e.target.value)}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="grid w-full items-center gap-1.5">
|
||||||
|
<Label htmlFor="editRam">RAM</Label>
|
||||||
|
<Input
|
||||||
|
id="editRam"
|
||||||
|
value={editRam}
|
||||||
|
onChange={(e) => setEditRam(e.target.value)}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="grid w-full items-center gap-1.5">
|
||||||
|
<Label htmlFor="editDisk">Disk</Label>
|
||||||
|
<Input
|
||||||
|
id="editDisk"
|
||||||
|
value={editDisk}
|
||||||
|
onChange={(e) => setEditDisk(e.target.value)}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</TabsContent>
|
||||||
|
</Tabs>
|
||||||
|
</AlertDialogDescription>
|
||||||
|
</AlertDialogHeader>
|
||||||
|
<AlertDialogFooter>
|
||||||
|
<AlertDialogCancel>Cancel</AlertDialogCancel>
|
||||||
|
<Button onClick={edit}>Save</Button>
|
||||||
|
</AlertDialogFooter>
|
||||||
|
</AlertDialogContent>
|
||||||
</AlertDialog>
|
</AlertDialog>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
66
components/ui/tabs.tsx
Normal file
66
components/ui/tabs.tsx
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
"use client"
|
||||||
|
|
||||||
|
import * as React from "react"
|
||||||
|
import * as TabsPrimitive from "@radix-ui/react-tabs"
|
||||||
|
|
||||||
|
import { cn } from "@/lib/utils"
|
||||||
|
|
||||||
|
function Tabs({
|
||||||
|
className,
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof TabsPrimitive.Root>) {
|
||||||
|
return (
|
||||||
|
<TabsPrimitive.Root
|
||||||
|
data-slot="tabs"
|
||||||
|
className={cn("flex flex-col gap-2", className)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function TabsList({
|
||||||
|
className,
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof TabsPrimitive.List>) {
|
||||||
|
return (
|
||||||
|
<TabsPrimitive.List
|
||||||
|
data-slot="tabs-list"
|
||||||
|
className={cn(
|
||||||
|
"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",
|
||||||
|
className
|
||||||
|
)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function TabsTrigger({
|
||||||
|
className,
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {
|
||||||
|
return (
|
||||||
|
<TabsPrimitive.Trigger
|
||||||
|
data-slot="tabs-trigger"
|
||||||
|
className={cn(
|
||||||
|
"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
||||||
|
className
|
||||||
|
)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function TabsContent({
|
||||||
|
className,
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof TabsPrimitive.Content>) {
|
||||||
|
return (
|
||||||
|
<TabsPrimitive.Content
|
||||||
|
data-slot="tabs-content"
|
||||||
|
className={cn("flex-1 outline-none", className)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export { Tabs, TabsList, TabsTrigger, TabsContent }
|
||||||
File diff suppressed because one or more lines are too long
@ -134,7 +134,11 @@ exports.Prisma.ServerScalarFieldEnum = {
|
|||||||
name: 'name',
|
name: 'name',
|
||||||
os: 'os',
|
os: 'os',
|
||||||
ip: 'ip',
|
ip: 'ip',
|
||||||
url: 'url'
|
url: 'url',
|
||||||
|
cpu: 'cpu',
|
||||||
|
gpu: 'gpu',
|
||||||
|
ram: 'ram',
|
||||||
|
disk: 'disk'
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.Prisma.SettingsScalarFieldEnum = {
|
exports.Prisma.SettingsScalarFieldEnum = {
|
||||||
|
|||||||
120
lib/generated/prisma/index.d.ts
vendored
120
lib/generated/prisma/index.d.ts
vendored
@ -2162,6 +2162,10 @@ export namespace Prisma {
|
|||||||
os: string | null
|
os: string | null
|
||||||
ip: string | null
|
ip: string | null
|
||||||
url: string | null
|
url: string | null
|
||||||
|
cpu: string | null
|
||||||
|
gpu: string | null
|
||||||
|
ram: string | null
|
||||||
|
disk: string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ServerMaxAggregateOutputType = {
|
export type ServerMaxAggregateOutputType = {
|
||||||
@ -2170,6 +2174,10 @@ export namespace Prisma {
|
|||||||
os: string | null
|
os: string | null
|
||||||
ip: string | null
|
ip: string | null
|
||||||
url: string | null
|
url: string | null
|
||||||
|
cpu: string | null
|
||||||
|
gpu: string | null
|
||||||
|
ram: string | null
|
||||||
|
disk: string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ServerCountAggregateOutputType = {
|
export type ServerCountAggregateOutputType = {
|
||||||
@ -2178,6 +2186,10 @@ export namespace Prisma {
|
|||||||
os: number
|
os: number
|
||||||
ip: number
|
ip: number
|
||||||
url: number
|
url: number
|
||||||
|
cpu: number
|
||||||
|
gpu: number
|
||||||
|
ram: number
|
||||||
|
disk: number
|
||||||
_all: number
|
_all: number
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2196,6 +2208,10 @@ export namespace Prisma {
|
|||||||
os?: true
|
os?: true
|
||||||
ip?: true
|
ip?: true
|
||||||
url?: true
|
url?: true
|
||||||
|
cpu?: true
|
||||||
|
gpu?: true
|
||||||
|
ram?: true
|
||||||
|
disk?: true
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ServerMaxAggregateInputType = {
|
export type ServerMaxAggregateInputType = {
|
||||||
@ -2204,6 +2220,10 @@ export namespace Prisma {
|
|||||||
os?: true
|
os?: true
|
||||||
ip?: true
|
ip?: true
|
||||||
url?: true
|
url?: true
|
||||||
|
cpu?: true
|
||||||
|
gpu?: true
|
||||||
|
ram?: true
|
||||||
|
disk?: true
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ServerCountAggregateInputType = {
|
export type ServerCountAggregateInputType = {
|
||||||
@ -2212,6 +2232,10 @@ export namespace Prisma {
|
|||||||
os?: true
|
os?: true
|
||||||
ip?: true
|
ip?: true
|
||||||
url?: true
|
url?: true
|
||||||
|
cpu?: true
|
||||||
|
gpu?: true
|
||||||
|
ram?: true
|
||||||
|
disk?: true
|
||||||
_all?: true
|
_all?: true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2307,6 +2331,10 @@ export namespace Prisma {
|
|||||||
os: string | null
|
os: string | null
|
||||||
ip: string | null
|
ip: string | null
|
||||||
url: string | null
|
url: string | null
|
||||||
|
cpu: string | null
|
||||||
|
gpu: string | null
|
||||||
|
ram: string | null
|
||||||
|
disk: string | null
|
||||||
_count: ServerCountAggregateOutputType | null
|
_count: ServerCountAggregateOutputType | null
|
||||||
_avg: ServerAvgAggregateOutputType | null
|
_avg: ServerAvgAggregateOutputType | null
|
||||||
_sum: ServerSumAggregateOutputType | null
|
_sum: ServerSumAggregateOutputType | null
|
||||||
@ -2334,6 +2362,10 @@ export namespace Prisma {
|
|||||||
os?: boolean
|
os?: boolean
|
||||||
ip?: boolean
|
ip?: boolean
|
||||||
url?: boolean
|
url?: boolean
|
||||||
|
cpu?: boolean
|
||||||
|
gpu?: boolean
|
||||||
|
ram?: boolean
|
||||||
|
disk?: boolean
|
||||||
}, ExtArgs["result"]["server"]>
|
}, ExtArgs["result"]["server"]>
|
||||||
|
|
||||||
export type serverSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
|
export type serverSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
|
||||||
@ -2342,6 +2374,10 @@ export namespace Prisma {
|
|||||||
os?: boolean
|
os?: boolean
|
||||||
ip?: boolean
|
ip?: boolean
|
||||||
url?: boolean
|
url?: boolean
|
||||||
|
cpu?: boolean
|
||||||
|
gpu?: boolean
|
||||||
|
ram?: boolean
|
||||||
|
disk?: boolean
|
||||||
}, ExtArgs["result"]["server"]>
|
}, ExtArgs["result"]["server"]>
|
||||||
|
|
||||||
export type serverSelectUpdateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
|
export type serverSelectUpdateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
|
||||||
@ -2350,6 +2386,10 @@ export namespace Prisma {
|
|||||||
os?: boolean
|
os?: boolean
|
||||||
ip?: boolean
|
ip?: boolean
|
||||||
url?: boolean
|
url?: boolean
|
||||||
|
cpu?: boolean
|
||||||
|
gpu?: boolean
|
||||||
|
ram?: boolean
|
||||||
|
disk?: boolean
|
||||||
}, ExtArgs["result"]["server"]>
|
}, ExtArgs["result"]["server"]>
|
||||||
|
|
||||||
export type serverSelectScalar = {
|
export type serverSelectScalar = {
|
||||||
@ -2358,9 +2398,13 @@ export namespace Prisma {
|
|||||||
os?: boolean
|
os?: boolean
|
||||||
ip?: boolean
|
ip?: boolean
|
||||||
url?: boolean
|
url?: boolean
|
||||||
|
cpu?: boolean
|
||||||
|
gpu?: boolean
|
||||||
|
ram?: boolean
|
||||||
|
disk?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export type serverOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "name" | "os" | "ip" | "url", ExtArgs["result"]["server"]>
|
export type serverOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "name" | "os" | "ip" | "url" | "cpu" | "gpu" | "ram" | "disk", ExtArgs["result"]["server"]>
|
||||||
|
|
||||||
export type $serverPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
|
export type $serverPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
|
||||||
name: "server"
|
name: "server"
|
||||||
@ -2371,6 +2415,10 @@ export namespace Prisma {
|
|||||||
os: string | null
|
os: string | null
|
||||||
ip: string | null
|
ip: string | null
|
||||||
url: string | null
|
url: string | null
|
||||||
|
cpu: string | null
|
||||||
|
gpu: string | null
|
||||||
|
ram: string | null
|
||||||
|
disk: string | null
|
||||||
}, ExtArgs["result"]["server"]>
|
}, ExtArgs["result"]["server"]>
|
||||||
composites: {}
|
composites: {}
|
||||||
}
|
}
|
||||||
@ -2799,6 +2847,10 @@ export namespace Prisma {
|
|||||||
readonly os: FieldRef<"server", 'String'>
|
readonly os: FieldRef<"server", 'String'>
|
||||||
readonly ip: FieldRef<"server", 'String'>
|
readonly ip: FieldRef<"server", 'String'>
|
||||||
readonly url: FieldRef<"server", 'String'>
|
readonly url: FieldRef<"server", 'String'>
|
||||||
|
readonly cpu: FieldRef<"server", 'String'>
|
||||||
|
readonly gpu: FieldRef<"server", 'String'>
|
||||||
|
readonly ram: FieldRef<"server", 'String'>
|
||||||
|
readonly disk: FieldRef<"server", 'String'>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -4189,7 +4241,11 @@ export namespace Prisma {
|
|||||||
name: 'name',
|
name: 'name',
|
||||||
os: 'os',
|
os: 'os',
|
||||||
ip: 'ip',
|
ip: 'ip',
|
||||||
url: 'url'
|
url: 'url',
|
||||||
|
cpu: 'cpu',
|
||||||
|
gpu: 'gpu',
|
||||||
|
ram: 'ram',
|
||||||
|
disk: 'disk'
|
||||||
};
|
};
|
||||||
|
|
||||||
export type ServerScalarFieldEnum = (typeof ServerScalarFieldEnum)[keyof typeof ServerScalarFieldEnum]
|
export type ServerScalarFieldEnum = (typeof ServerScalarFieldEnum)[keyof typeof ServerScalarFieldEnum]
|
||||||
@ -4381,6 +4437,10 @@ export namespace Prisma {
|
|||||||
os?: StringNullableFilter<"server"> | string | null
|
os?: StringNullableFilter<"server"> | string | null
|
||||||
ip?: StringNullableFilter<"server"> | string | null
|
ip?: StringNullableFilter<"server"> | string | null
|
||||||
url?: StringNullableFilter<"server"> | string | null
|
url?: StringNullableFilter<"server"> | string | null
|
||||||
|
cpu?: StringNullableFilter<"server"> | string | null
|
||||||
|
gpu?: StringNullableFilter<"server"> | string | null
|
||||||
|
ram?: StringNullableFilter<"server"> | string | null
|
||||||
|
disk?: StringNullableFilter<"server"> | string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export type serverOrderByWithRelationInput = {
|
export type serverOrderByWithRelationInput = {
|
||||||
@ -4389,6 +4449,10 @@ export namespace Prisma {
|
|||||||
os?: SortOrderInput | SortOrder
|
os?: SortOrderInput | SortOrder
|
||||||
ip?: SortOrderInput | SortOrder
|
ip?: SortOrderInput | SortOrder
|
||||||
url?: SortOrderInput | SortOrder
|
url?: SortOrderInput | SortOrder
|
||||||
|
cpu?: SortOrderInput | SortOrder
|
||||||
|
gpu?: SortOrderInput | SortOrder
|
||||||
|
ram?: SortOrderInput | SortOrder
|
||||||
|
disk?: SortOrderInput | SortOrder
|
||||||
}
|
}
|
||||||
|
|
||||||
export type serverWhereUniqueInput = Prisma.AtLeast<{
|
export type serverWhereUniqueInput = Prisma.AtLeast<{
|
||||||
@ -4400,6 +4464,10 @@ export namespace Prisma {
|
|||||||
os?: StringNullableFilter<"server"> | string | null
|
os?: StringNullableFilter<"server"> | string | null
|
||||||
ip?: StringNullableFilter<"server"> | string | null
|
ip?: StringNullableFilter<"server"> | string | null
|
||||||
url?: StringNullableFilter<"server"> | string | null
|
url?: StringNullableFilter<"server"> | string | null
|
||||||
|
cpu?: StringNullableFilter<"server"> | string | null
|
||||||
|
gpu?: StringNullableFilter<"server"> | string | null
|
||||||
|
ram?: StringNullableFilter<"server"> | string | null
|
||||||
|
disk?: StringNullableFilter<"server"> | string | null
|
||||||
}, "id">
|
}, "id">
|
||||||
|
|
||||||
export type serverOrderByWithAggregationInput = {
|
export type serverOrderByWithAggregationInput = {
|
||||||
@ -4408,6 +4476,10 @@ export namespace Prisma {
|
|||||||
os?: SortOrderInput | SortOrder
|
os?: SortOrderInput | SortOrder
|
||||||
ip?: SortOrderInput | SortOrder
|
ip?: SortOrderInput | SortOrder
|
||||||
url?: SortOrderInput | SortOrder
|
url?: SortOrderInput | SortOrder
|
||||||
|
cpu?: SortOrderInput | SortOrder
|
||||||
|
gpu?: SortOrderInput | SortOrder
|
||||||
|
ram?: SortOrderInput | SortOrder
|
||||||
|
disk?: SortOrderInput | SortOrder
|
||||||
_count?: serverCountOrderByAggregateInput
|
_count?: serverCountOrderByAggregateInput
|
||||||
_avg?: serverAvgOrderByAggregateInput
|
_avg?: serverAvgOrderByAggregateInput
|
||||||
_max?: serverMaxOrderByAggregateInput
|
_max?: serverMaxOrderByAggregateInput
|
||||||
@ -4424,6 +4496,10 @@ export namespace Prisma {
|
|||||||
os?: StringNullableWithAggregatesFilter<"server"> | string | null
|
os?: StringNullableWithAggregatesFilter<"server"> | string | null
|
||||||
ip?: StringNullableWithAggregatesFilter<"server"> | string | null
|
ip?: StringNullableWithAggregatesFilter<"server"> | string | null
|
||||||
url?: StringNullableWithAggregatesFilter<"server"> | string | null
|
url?: StringNullableWithAggregatesFilter<"server"> | string | null
|
||||||
|
cpu?: StringNullableWithAggregatesFilter<"server"> | string | null
|
||||||
|
gpu?: StringNullableWithAggregatesFilter<"server"> | string | null
|
||||||
|
ram?: StringNullableWithAggregatesFilter<"server"> | string | null
|
||||||
|
disk?: StringNullableWithAggregatesFilter<"server"> | string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export type settingsWhereInput = {
|
export type settingsWhereInput = {
|
||||||
@ -4551,6 +4627,10 @@ export namespace Prisma {
|
|||||||
os?: string | null
|
os?: string | null
|
||||||
ip?: string | null
|
ip?: string | null
|
||||||
url?: string | null
|
url?: string | null
|
||||||
|
cpu?: string | null
|
||||||
|
gpu?: string | null
|
||||||
|
ram?: string | null
|
||||||
|
disk?: string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export type serverUncheckedCreateInput = {
|
export type serverUncheckedCreateInput = {
|
||||||
@ -4559,6 +4639,10 @@ export namespace Prisma {
|
|||||||
os?: string | null
|
os?: string | null
|
||||||
ip?: string | null
|
ip?: string | null
|
||||||
url?: string | null
|
url?: string | null
|
||||||
|
cpu?: string | null
|
||||||
|
gpu?: string | null
|
||||||
|
ram?: string | null
|
||||||
|
disk?: string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export type serverUpdateInput = {
|
export type serverUpdateInput = {
|
||||||
@ -4566,6 +4650,10 @@ export namespace Prisma {
|
|||||||
os?: NullableStringFieldUpdateOperationsInput | string | null
|
os?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
ip?: NullableStringFieldUpdateOperationsInput | string | null
|
ip?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
url?: NullableStringFieldUpdateOperationsInput | string | null
|
url?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
cpu?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
gpu?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
ram?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
disk?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export type serverUncheckedUpdateInput = {
|
export type serverUncheckedUpdateInput = {
|
||||||
@ -4574,6 +4662,10 @@ export namespace Prisma {
|
|||||||
os?: NullableStringFieldUpdateOperationsInput | string | null
|
os?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
ip?: NullableStringFieldUpdateOperationsInput | string | null
|
ip?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
url?: NullableStringFieldUpdateOperationsInput | string | null
|
url?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
cpu?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
gpu?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
ram?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
disk?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export type serverCreateManyInput = {
|
export type serverCreateManyInput = {
|
||||||
@ -4582,6 +4674,10 @@ export namespace Prisma {
|
|||||||
os?: string | null
|
os?: string | null
|
||||||
ip?: string | null
|
ip?: string | null
|
||||||
url?: string | null
|
url?: string | null
|
||||||
|
cpu?: string | null
|
||||||
|
gpu?: string | null
|
||||||
|
ram?: string | null
|
||||||
|
disk?: string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export type serverUpdateManyMutationInput = {
|
export type serverUpdateManyMutationInput = {
|
||||||
@ -4589,6 +4685,10 @@ export namespace Prisma {
|
|||||||
os?: NullableStringFieldUpdateOperationsInput | string | null
|
os?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
ip?: NullableStringFieldUpdateOperationsInput | string | null
|
ip?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
url?: NullableStringFieldUpdateOperationsInput | string | null
|
url?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
cpu?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
gpu?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
ram?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
disk?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export type serverUncheckedUpdateManyInput = {
|
export type serverUncheckedUpdateManyInput = {
|
||||||
@ -4597,6 +4697,10 @@ export namespace Prisma {
|
|||||||
os?: NullableStringFieldUpdateOperationsInput | string | null
|
os?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
ip?: NullableStringFieldUpdateOperationsInput | string | null
|
ip?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
url?: NullableStringFieldUpdateOperationsInput | string | null
|
url?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
cpu?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
gpu?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
ram?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
|
disk?: NullableStringFieldUpdateOperationsInput | string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export type settingsCreateInput = {
|
export type settingsCreateInput = {
|
||||||
@ -4819,6 +4923,10 @@ export namespace Prisma {
|
|||||||
os?: SortOrder
|
os?: SortOrder
|
||||||
ip?: SortOrder
|
ip?: SortOrder
|
||||||
url?: SortOrder
|
url?: SortOrder
|
||||||
|
cpu?: SortOrder
|
||||||
|
gpu?: SortOrder
|
||||||
|
ram?: SortOrder
|
||||||
|
disk?: SortOrder
|
||||||
}
|
}
|
||||||
|
|
||||||
export type serverAvgOrderByAggregateInput = {
|
export type serverAvgOrderByAggregateInput = {
|
||||||
@ -4831,6 +4939,10 @@ export namespace Prisma {
|
|||||||
os?: SortOrder
|
os?: SortOrder
|
||||||
ip?: SortOrder
|
ip?: SortOrder
|
||||||
url?: SortOrder
|
url?: SortOrder
|
||||||
|
cpu?: SortOrder
|
||||||
|
gpu?: SortOrder
|
||||||
|
ram?: SortOrder
|
||||||
|
disk?: SortOrder
|
||||||
}
|
}
|
||||||
|
|
||||||
export type serverMinOrderByAggregateInput = {
|
export type serverMinOrderByAggregateInput = {
|
||||||
@ -4839,6 +4951,10 @@ export namespace Prisma {
|
|||||||
os?: SortOrder
|
os?: SortOrder
|
||||||
ip?: SortOrder
|
ip?: SortOrder
|
||||||
url?: SortOrder
|
url?: SortOrder
|
||||||
|
cpu?: SortOrder
|
||||||
|
gpu?: SortOrder
|
||||||
|
ram?: SortOrder
|
||||||
|
disk?: SortOrder
|
||||||
}
|
}
|
||||||
|
|
||||||
export type serverSumOrderByAggregateInput = {
|
export type serverSumOrderByAggregateInput = {
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "prisma-client-3cca458213079308f6a48d11bf199a5e86068a203caa155a2d3c336d3e840807",
|
"name": "prisma-client-de4b921f48dce9241799741dfcfe396adaf367f0b3f9e641b2d7d6d97a5849aa",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"types": "index.d.ts",
|
"types": "index.d.ts",
|
||||||
"browser": "index-browser.js",
|
"browser": "index-browser.js",
|
||||||
|
|||||||
BIN
lib/generated/prisma/query_engine-windows.dll.node.tmp384
Normal file
BIN
lib/generated/prisma/query_engine-windows.dll.node.tmp384
Normal file
Binary file not shown.
@ -134,7 +134,11 @@ exports.Prisma.ServerScalarFieldEnum = {
|
|||||||
name: 'name',
|
name: 'name',
|
||||||
os: 'os',
|
os: 'os',
|
||||||
ip: 'ip',
|
ip: 'ip',
|
||||||
url: 'url'
|
url: 'url',
|
||||||
|
cpu: 'cpu',
|
||||||
|
gpu: 'gpu',
|
||||||
|
ram: 'ram',
|
||||||
|
disk: 'disk'
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.Prisma.SettingsScalarFieldEnum = {
|
exports.Prisma.SettingsScalarFieldEnum = {
|
||||||
|
|||||||
31
package-lock.json
generated
31
package-lock.json
generated
@ -17,6 +17,7 @@
|
|||||||
"@radix-ui/react-select": "^2.1.7",
|
"@radix-ui/react-select": "^2.1.7",
|
||||||
"@radix-ui/react-separator": "^1.1.3",
|
"@radix-ui/react-separator": "^1.1.3",
|
||||||
"@radix-ui/react-slot": "^1.2.0",
|
"@radix-ui/react-slot": "^1.2.0",
|
||||||
|
"@radix-ui/react-tabs": "^1.1.4",
|
||||||
"@radix-ui/react-tooltip": "^1.2.0",
|
"@radix-ui/react-tooltip": "^1.2.0",
|
||||||
"@types/axios": "^0.9.36",
|
"@types/axios": "^0.9.36",
|
||||||
"@types/js-cookie": "^3.0.6",
|
"@types/js-cookie": "^3.0.6",
|
||||||
@ -1701,6 +1702,36 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@radix-ui/react-tabs": {
|
||||||
|
"version": "1.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.4.tgz",
|
||||||
|
"integrity": "sha512-fuHMHWSf5SRhXke+DbHXj2wVMo+ghVH30vhX3XVacdXqDl+J4XWafMIGOOER861QpBx1jxgwKXL2dQnfrsd8MQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@radix-ui/primitive": "1.1.2",
|
||||||
|
"@radix-ui/react-context": "1.1.2",
|
||||||
|
"@radix-ui/react-direction": "1.1.1",
|
||||||
|
"@radix-ui/react-id": "1.1.1",
|
||||||
|
"@radix-ui/react-presence": "1.1.3",
|
||||||
|
"@radix-ui/react-primitive": "2.0.3",
|
||||||
|
"@radix-ui/react-roving-focus": "1.1.3",
|
||||||
|
"@radix-ui/react-use-controllable-state": "1.1.1"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/react": "*",
|
||||||
|
"@types/react-dom": "*",
|
||||||
|
"react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
|
||||||
|
"react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/react": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"@types/react-dom": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@radix-ui/react-tooltip": {
|
"node_modules/@radix-ui/react-tooltip": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.0.tgz",
|
||||||
|
|||||||
@ -18,6 +18,7 @@
|
|||||||
"@radix-ui/react-select": "^2.1.7",
|
"@radix-ui/react-select": "^2.1.7",
|
||||||
"@radix-ui/react-separator": "^1.1.3",
|
"@radix-ui/react-separator": "^1.1.3",
|
||||||
"@radix-ui/react-slot": "^1.2.0",
|
"@radix-ui/react-slot": "^1.2.0",
|
||||||
|
"@radix-ui/react-tabs": "^1.1.4",
|
||||||
"@radix-ui/react-tooltip": "^1.2.0",
|
"@radix-ui/react-tooltip": "^1.2.0",
|
||||||
"@types/axios": "^0.9.36",
|
"@types/axios": "^0.9.36",
|
||||||
"@types/js-cookie": "^3.0.6",
|
"@types/js-cookie": "^3.0.6",
|
||||||
|
|||||||
5
prisma/migrations/20250412183017_server/migration.sql
Normal file
5
prisma/migrations/20250412183017_server/migration.sql
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "server" ADD COLUMN "cpu" TEXT,
|
||||||
|
ADD COLUMN "disk" TEXT,
|
||||||
|
ADD COLUMN "gpu" TEXT,
|
||||||
|
ADD COLUMN "ram" TEXT;
|
||||||
@ -32,6 +32,10 @@ model server {
|
|||||||
os String?
|
os String?
|
||||||
ip String?
|
ip String?
|
||||||
url String?
|
url String?
|
||||||
|
cpu String?
|
||||||
|
gpu String?
|
||||||
|
ram String?
|
||||||
|
disk String?
|
||||||
}
|
}
|
||||||
|
|
||||||
model settings {
|
model settings {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user