Applications need a Server

This commit is contained in:
headlessdev 2025-04-12 13:19:52 +02:00
parent 0506731a12
commit 43b7b3b270
12 changed files with 200 additions and 105 deletions

View File

@ -2,6 +2,7 @@ import { NextResponse, NextRequest } from "next/server";
import { PrismaClient } from '@/lib/generated/prisma' import { PrismaClient } from '@/lib/generated/prisma'
interface AddRequest { interface AddRequest {
serverId: number;
name: string; name: string;
description: string; description: string;
icon: string; icon: string;
@ -14,10 +15,11 @@ 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, description, icon, publicURL, localURL } = body; const { serverId, name, description, icon, publicURL, localURL } = body;
const application = await prisma.application.create({ const application = await prisma.application.create({
data: { data: {
serverId,
name, name,
description, description,
icon, icon,

View File

@ -19,11 +19,29 @@ export async function POST(request: NextRequest) {
orderBy: { name: 'asc' } orderBy: { name: 'asc' }
}); });
const serverIds = applications
.map(app => app.serverId)
.filter((id): id is number => id !== null);
const servers = await prisma.server.findMany({
where: {
id: {
in: serverIds
}
}
});
const applicationsWithServers = applications.map(app => ({
...app,
server: servers.find(s => s.id === app.serverId)?.name || 'No server'
}));
const totalCount = await prisma.application.count(); const totalCount = await prisma.application.count();
const maxPage = Math.ceil(totalCount / ITEMS_PER_PAGE); const maxPage = Math.ceil(totalCount / ITEMS_PER_PAGE);
return NextResponse.json({ return NextResponse.json({
applications, applications: applicationsWithServers,
servers,
maxPage maxPage
}); });
} catch (error: any) { } catch (error: any) {

View File

@ -1,6 +1,6 @@
"use client"; "use client";
import { AppSidebar } from "@/components/app-sidebar" import { AppSidebar } from "@/components/app-sidebar";
import { import {
Breadcrumb, Breadcrumb,
BreadcrumbItem, BreadcrumbItem,
@ -8,15 +8,15 @@ import {
BreadcrumbList, BreadcrumbList,
BreadcrumbPage, BreadcrumbPage,
BreadcrumbSeparator, BreadcrumbSeparator,
} from "@/components/ui/breadcrumb" } from "@/components/ui/breadcrumb";
import { Separator } from "@/components/ui/separator" import { Separator } from "@/components/ui/separator";
import { import {
SidebarInset, SidebarInset,
SidebarProvider, SidebarProvider,
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, Home, Trash2 } from "lucide-react" // Importiere Icons import { Plus, Link, Home, Trash2 } from "lucide-react";
import { import {
Card, Card,
CardContent, CardContent,
@ -24,7 +24,7 @@ import {
CardFooter, CardFooter,
CardHeader, CardHeader,
CardTitle, CardTitle,
} from "@/components/ui/card" } from "@/components/ui/card";
import { import {
Pagination, Pagination,
PaginationContent, PaginationContent,
@ -33,7 +33,7 @@ import {
PaginationLink, PaginationLink,
PaginationNext, PaginationNext,
PaginationPrevious, PaginationPrevious,
} from "@/components/ui/pagination" } from "@/components/ui/pagination";
import { import {
AlertDialog, AlertDialog,
AlertDialogAction, AlertDialogAction,
@ -44,10 +44,17 @@ import {
AlertDialogHeader, AlertDialogHeader,
AlertDialogTitle, AlertDialogTitle,
AlertDialogTrigger, AlertDialogTrigger,
} from "@/components/ui/alert-dialog" } from "@/components/ui/alert-dialog";
import { Input } from "@/components/ui/input" import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label" import { Label } from "@/components/ui/label";
import { Textarea } from "@/components/ui/textarea" import { Textarea } from "@/components/ui/textarea";
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from "@/components/ui/select";
import { useState, useEffect } from "react"; import { useState, useEffect } from "react";
import axios from 'axios'; import axios from 'axios';
@ -58,14 +65,22 @@ export default function Dashboard() {
const [icon, setIcon] = useState(""); const [icon, setIcon] = useState("");
const [publicURL, setPublicURL] = useState(""); const [publicURL, setPublicURL] = useState("");
const [localURL, setLocalURL] = useState(""); const [localURL, setLocalURL] = useState("");
const [serverId, setServerId] = useState<number | null>(null);
const [currentPage, setCurrentPage] = useState(1); const [currentPage, setCurrentPage] = useState(1);
const [maxPage, setMaxPage] = useState(1); const [maxPage, setMaxPage] = useState(1);
const [applications, setApplications] = useState([]); const [applications, setApplications] = useState([]);
const [servers, setServers] = useState([]);
const add = async () => { const add = async () => {
try { try {
const response = await axios.post('/api/applications/add', { name, description, icon, publicURL, localURL }); await axios.post('/api/applications/add', {
name,
description,
icon,
publicURL,
localURL,
serverId
});
getApplications(); getApplications();
} catch (error: any) { } catch (error: any) {
console.log(error.response.data); console.log(error.response.data);
@ -76,6 +91,7 @@ export default function Dashboard() {
try { try {
const response = await axios.post('/api/applications/get', { page: currentPage }); const response = await axios.post('/api/applications/get', { page: currentPage });
setApplications(response.data.applications); setApplications(response.data.applications);
setServers(response.data.servers);
setMaxPage(response.data.maxPage); setMaxPage(response.data.maxPage);
} catch (error: any) { } catch (error: any) {
console.log(error.response); console.log(error.response);
@ -86,13 +102,8 @@ export default function Dashboard() {
getApplications(); getApplications();
}, [currentPage]); }, [currentPage]);
const handlePrevious = () => { const handlePrevious = () => setCurrentPage(prev => Math.max(1, prev - 1));
setCurrentPage(prev => Math.max(1, prev - 1)); const handleNext = () => setCurrentPage(prev => Math.min(maxPage, prev + 1));
}
const handleNext = () => {
setCurrentPage(prev => Math.min(maxPage, prev + 1));
}
const deleteApplication = async (id: number) => { const deleteApplication = async (id: number) => {
try { try {
@ -129,48 +140,69 @@ export default function Dashboard() {
</div> </div>
</header> </header>
<div className="pl-4 pr-4"> <div className="pl-4 pr-4">
<div className="flex justify-between"> <div className="flex justify-between items-center">
<span className="text-2xl font-semibold">Your Applications</span> <span className="text-2xl font-semibold">Your Applications</span>
<AlertDialog> {servers.length === 0 ? (
<AlertDialogTrigger asChild> <p className="text-muted-foreground">You must first add a server.</p>
<Button variant="outline" size="icon"> ) : (
<Plus /> <AlertDialog>
</Button> <AlertDialogTrigger asChild>
</AlertDialogTrigger> <Button variant="outline" size="icon">
<AlertDialogContent> <Plus />
<AlertDialogHeader> </Button>
<AlertDialogTitle>Add an application</AlertDialogTitle> </AlertDialogTrigger>
<AlertDialogDescription> <AlertDialogContent>
<div className="space-y-4 pt-4"> <AlertDialogHeader>
<div className="grid w-full items-center gap-1.5"> <AlertDialogTitle>Add an application</AlertDialogTitle>
<Label htmlFor="name">Name</Label> <AlertDialogDescription>
<Input id="name" type="text" placeholder="e.g. Portainer" onChange={(e) => setName(e.target.value)}/> <div className="space-y-4 pt-4">
<div className="grid w-full items-center gap-1.5">
<Label>Name</Label>
<Input placeholder="e.g. Portainer" onChange={(e) => setName(e.target.value)}/>
</div>
<div className="grid w-full items-center gap-1.5">
<Label>Server</Label>
<Select onValueChange={(v) => setServerId(Number(v))} required>
<SelectTrigger className="w-full">
<SelectValue placeholder="Select server" />
</SelectTrigger>
<SelectContent>
{servers.map((server) => (
<SelectItem key={server.id} value={String(server.id)}>
{server.name}
</SelectItem>
))}
</SelectContent>
</Select>
</div>
<div className="grid w-full items-center gap-1.5">
<Label>Description <span className="text-stone-600">(optional)</span></Label>
<Textarea placeholder="Application description" onChange={(e) => setDescription(e.target.value)}/>
</div>
<div className="grid w-full items-center gap-1.5">
<Label>Icon URL <span className="text-stone-600">(optional)</span></Label>
<Input placeholder="https://example.com/icon.png" onChange={(e) => setIcon(e.target.value)}/>
</div>
<div className="grid w-full items-center gap-1.5">
<Label>Public URL</Label>
<Input placeholder="https://example.com" onChange={(e) => setPublicURL(e.target.value)}/>
</div>
<div className="grid w-full items-center gap-1.5">
<Label>Local URL <span className="text-stone-600">(optional)</span></Label>
<Input placeholder="http://localhost:3000" onChange={(e) => setLocalURL(e.target.value)}/>
</div>
</div> </div>
<div className="grid w-full items-center gap-1.5"> </AlertDialogDescription>
<Label htmlFor="description">Description <span className="text-stone-600">(optional)</span></Label> </AlertDialogHeader>
<Textarea id="description" placeholder="e.g. Portainer is a self-hosted, open-source platform for managing Docker containers." onChange={(e) => setDescription(e.target.value)}/> <AlertDialogFooter>
</div> <AlertDialogCancel>Cancel</AlertDialogCancel>
<div className="grid w-full items-center gap-1.5"> <Button onClick={add} disabled={!name || !publicURL || !serverId}>
<Label htmlFor="icon">Icon</Label> Add
<Input id="icon" type="text" placeholder="e.g. https://www.portainer.io/hubfs/portainer-logo-black.svg" onChange={(e) => setIcon(e.target.value)}/> </Button>
</div> </AlertDialogFooter>
<div className="grid w-full items-center gap-1.5"> </AlertDialogContent>
<Label htmlFor="publicURL">Public URL</Label> </AlertDialog>
<Input id="publicURL" type="text" placeholder="e.g. https://portainer.lastname.com" onChange={(e) => setPublicURL(e.target.value)}/> )}
</div>
<div className="grid w-full items-center gap-1.5">
<Label htmlFor="localURL">Local URL <span className="text-stone-600">(optional)</span></Label>
<Input id="localURL" type="text" placeholder="e.g. http://localhost:3000" onChange={(e) => setLocalURL(e.target.value)}/>
</div>
</div>
</AlertDialogDescription>
</AlertDialogHeader>
<AlertDialogFooter>
<AlertDialogCancel>Cancel</AlertDialogCancel>
<Button onClick={add}>Add</Button>
</AlertDialogFooter>
</AlertDialogContent>
</AlertDialog>
</div> </div>
<br /> <br />
{applications.map((app) => ( {applications.map((app) => (
@ -187,7 +219,10 @@ export default function Dashboard() {
</div> </div>
<div className="ml-4"> <div className="ml-4">
<CardTitle className="text-2xl font-bold">{app.name}</CardTitle> <CardTitle className="text-2xl font-bold">{app.name}</CardTitle>
<CardDescription className="text-md">{app.description}</CardDescription> <CardDescription className="text-md">
{app.description}<br />
Server: {app.server || 'No server'}
</CardDescription>
</div> </div>
</div> </div>
<div className="flex flex-col items-end justify-start space-y-2 w-[270px]"> <div className="flex flex-col items-end justify-start space-y-2 w-[270px]">
@ -227,30 +262,28 @@ export default function Dashboard() {
</Card> </Card>
))} ))}
<div className="pt-4"> <div className="pt-4">
<Pagination> <Pagination>
<PaginationContent> <PaginationContent>
<PaginationItem> <PaginationItem>
<PaginationPrevious <PaginationPrevious
href="#" href="#"
onClick={handlePrevious} onClick={handlePrevious}
isActive={currentPage > 1} isActive={currentPage > 1}
/> />
</PaginationItem> </PaginationItem>
<PaginationItem>
<PaginationItem> <PaginationLink isActive>{currentPage}</PaginationLink>
<PaginationLink isActive>{currentPage}</PaginationLink> </PaginationItem>
</PaginationItem> <PaginationItem>
<PaginationNext
<PaginationItem> href="#"
<PaginationNext onClick={handleNext}
href="#" isActive={currentPage < maxPage}
onClick={handleNext} />
isActive={currentPage < maxPage} </PaginationItem>
/> </PaginationContent>
</PaginationItem> </Pagination>
</PaginationContent> </div>
</Pagination>
</div>
</div> </div>
</SidebarInset> </SidebarInset>
</SidebarProvider> </SidebarProvider>

View File

@ -91,6 +91,7 @@ exports.Prisma.TransactionIsolationLevel = makeStrictEnum({
exports.Prisma.ApplicationScalarFieldEnum = { exports.Prisma.ApplicationScalarFieldEnum = {
id: 'id', id: 'id',
serverId: 'serverId',
name: 'name', name: 'name',
description: 'description', description: 'description',
icon: 'icon', icon: 'icon',
@ -174,13 +175,13 @@ const config = {
} }
} }
}, },
"inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\n// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?\n// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init\n\ngenerator client {\n provider = \"prisma-client-js\"\n output = \"../lib/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel application {\n id Int @id @default(autoincrement())\n name String\n description String?\n icon String\n publicURL String\n localURL String?\n createdAt DateTime @default(now())\n}\n\nmodel server {\n id Int @id @default(autoincrement())\n name String\n os String?\n ip String?\n url String?\n}\n", "inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\n// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?\n// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init\n\ngenerator client {\n provider = \"prisma-client-js\"\n output = \"../lib/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel application {\n id Int @id @default(autoincrement())\n serverId Int @default(1)\n name String\n description String?\n icon String\n publicURL String\n localURL String?\n createdAt DateTime @default(now())\n}\n\nmodel server {\n id Int @id @default(autoincrement())\n name String\n os String?\n ip String?\n url String?\n}\n",
"inlineSchemaHash": "ddf72260e19ee586841a252bd3c8cf4f117ce15f0dc9aef0f129fd5d226787c0", "inlineSchemaHash": "f689d07c314e551dbb544b300c2eaf202c8b2a3439248ed3dbdc3eb508f94dc1",
"copyEngine": true "copyEngine": true
} }
config.dirname = '/' config.dirname = '/'
config.runtimeDataModel = JSON.parse("{\"models\":{\"application\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"icon\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"publicURL\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"localURL\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"server\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"os\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ip\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{},\"types\":{}}") config.runtimeDataModel = JSON.parse("{\"models\":{\"application\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"serverId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"icon\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"publicURL\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"localURL\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"server\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"os\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ip\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{},\"types\":{}}")
defineDmmfProperty(exports.Prisma, config.runtimeDataModel) defineDmmfProperty(exports.Prisma, config.runtimeDataModel)
config.engineWasm = undefined config.engineWasm = undefined
config.compilerWasm = undefined config.compilerWasm = undefined

View File

@ -119,6 +119,7 @@ exports.Prisma.TransactionIsolationLevel = makeStrictEnum({
exports.Prisma.ApplicationScalarFieldEnum = { exports.Prisma.ApplicationScalarFieldEnum = {
id: 'id', id: 'id',
serverId: 'serverId',
name: 'name', name: 'name',
description: 'description', description: 'description',
icon: 'icon', icon: 'icon',

View File

@ -974,14 +974,17 @@ export namespace Prisma {
export type ApplicationAvgAggregateOutputType = { export type ApplicationAvgAggregateOutputType = {
id: number | null id: number | null
serverId: number | null
} }
export type ApplicationSumAggregateOutputType = { export type ApplicationSumAggregateOutputType = {
id: number | null id: number | null
serverId: number | null
} }
export type ApplicationMinAggregateOutputType = { export type ApplicationMinAggregateOutputType = {
id: number | null id: number | null
serverId: number | null
name: string | null name: string | null
description: string | null description: string | null
icon: string | null icon: string | null
@ -992,6 +995,7 @@ export namespace Prisma {
export type ApplicationMaxAggregateOutputType = { export type ApplicationMaxAggregateOutputType = {
id: number | null id: number | null
serverId: number | null
name: string | null name: string | null
description: string | null description: string | null
icon: string | null icon: string | null
@ -1002,6 +1006,7 @@ export namespace Prisma {
export type ApplicationCountAggregateOutputType = { export type ApplicationCountAggregateOutputType = {
id: number id: number
serverId: number
name: number name: number
description: number description: number
icon: number icon: number
@ -1014,14 +1019,17 @@ export namespace Prisma {
export type ApplicationAvgAggregateInputType = { export type ApplicationAvgAggregateInputType = {
id?: true id?: true
serverId?: true
} }
export type ApplicationSumAggregateInputType = { export type ApplicationSumAggregateInputType = {
id?: true id?: true
serverId?: true
} }
export type ApplicationMinAggregateInputType = { export type ApplicationMinAggregateInputType = {
id?: true id?: true
serverId?: true
name?: true name?: true
description?: true description?: true
icon?: true icon?: true
@ -1032,6 +1040,7 @@ export namespace Prisma {
export type ApplicationMaxAggregateInputType = { export type ApplicationMaxAggregateInputType = {
id?: true id?: true
serverId?: true
name?: true name?: true
description?: true description?: true
icon?: true icon?: true
@ -1042,6 +1051,7 @@ export namespace Prisma {
export type ApplicationCountAggregateInputType = { export type ApplicationCountAggregateInputType = {
id?: true id?: true
serverId?: true
name?: true name?: true
description?: true description?: true
icon?: true icon?: true
@ -1139,6 +1149,7 @@ export namespace Prisma {
export type ApplicationGroupByOutputType = { export type ApplicationGroupByOutputType = {
id: number id: number
serverId: number
name: string name: string
description: string | null description: string | null
icon: string icon: string
@ -1168,6 +1179,7 @@ export namespace Prisma {
export type applicationSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{ export type applicationSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
id?: boolean id?: boolean
serverId?: boolean
name?: boolean name?: boolean
description?: boolean description?: boolean
icon?: boolean icon?: boolean
@ -1178,6 +1190,7 @@ export namespace Prisma {
export type applicationSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{ export type applicationSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
id?: boolean id?: boolean
serverId?: boolean
name?: boolean name?: boolean
description?: boolean description?: boolean
icon?: boolean icon?: boolean
@ -1188,6 +1201,7 @@ export namespace Prisma {
export type applicationSelectUpdateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{ export type applicationSelectUpdateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
id?: boolean id?: boolean
serverId?: boolean
name?: boolean name?: boolean
description?: boolean description?: boolean
icon?: boolean icon?: boolean
@ -1198,6 +1212,7 @@ export namespace Prisma {
export type applicationSelectScalar = { export type applicationSelectScalar = {
id?: boolean id?: boolean
serverId?: boolean
name?: boolean name?: boolean
description?: boolean description?: boolean
icon?: boolean icon?: boolean
@ -1206,13 +1221,14 @@ export namespace Prisma {
createdAt?: boolean createdAt?: boolean
} }
export type applicationOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "name" | "description" | "icon" | "publicURL" | "localURL" | "createdAt", ExtArgs["result"]["application"]> export type applicationOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "serverId" | "name" | "description" | "icon" | "publicURL" | "localURL" | "createdAt", ExtArgs["result"]["application"]>
export type $applicationPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = { export type $applicationPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
name: "application" name: "application"
objects: {} objects: {}
scalars: $Extensions.GetPayloadResult<{ scalars: $Extensions.GetPayloadResult<{
id: number id: number
serverId: number
name: string name: string
description: string | null description: string | null
icon: string icon: string
@ -1643,6 +1659,7 @@ export namespace Prisma {
*/ */
interface applicationFieldRefs { interface applicationFieldRefs {
readonly id: FieldRef<"application", 'Int'> readonly id: FieldRef<"application", 'Int'>
readonly serverId: FieldRef<"application", 'Int'>
readonly name: FieldRef<"application", 'String'> readonly name: FieldRef<"application", 'String'>
readonly description: FieldRef<"application", 'String'> readonly description: FieldRef<"application", 'String'>
readonly icon: FieldRef<"application", 'String'> readonly icon: FieldRef<"application", 'String'>
@ -3060,6 +3077,7 @@ export namespace Prisma {
export const ApplicationScalarFieldEnum: { export const ApplicationScalarFieldEnum: {
id: 'id', id: 'id',
serverId: 'serverId',
name: 'name', name: 'name',
description: 'description', description: 'description',
icon: 'icon', icon: 'icon',
@ -3175,6 +3193,7 @@ export namespace Prisma {
OR?: applicationWhereInput[] OR?: applicationWhereInput[]
NOT?: applicationWhereInput | applicationWhereInput[] NOT?: applicationWhereInput | applicationWhereInput[]
id?: IntFilter<"application"> | number id?: IntFilter<"application"> | number
serverId?: IntFilter<"application"> | number
name?: StringFilter<"application"> | string name?: StringFilter<"application"> | string
description?: StringNullableFilter<"application"> | string | null description?: StringNullableFilter<"application"> | string | null
icon?: StringFilter<"application"> | string icon?: StringFilter<"application"> | string
@ -3185,6 +3204,7 @@ export namespace Prisma {
export type applicationOrderByWithRelationInput = { export type applicationOrderByWithRelationInput = {
id?: SortOrder id?: SortOrder
serverId?: SortOrder
name?: SortOrder name?: SortOrder
description?: SortOrderInput | SortOrder description?: SortOrderInput | SortOrder
icon?: SortOrder icon?: SortOrder
@ -3198,6 +3218,7 @@ export namespace Prisma {
AND?: applicationWhereInput | applicationWhereInput[] AND?: applicationWhereInput | applicationWhereInput[]
OR?: applicationWhereInput[] OR?: applicationWhereInput[]
NOT?: applicationWhereInput | applicationWhereInput[] NOT?: applicationWhereInput | applicationWhereInput[]
serverId?: IntFilter<"application"> | number
name?: StringFilter<"application"> | string name?: StringFilter<"application"> | string
description?: StringNullableFilter<"application"> | string | null description?: StringNullableFilter<"application"> | string | null
icon?: StringFilter<"application"> | string icon?: StringFilter<"application"> | string
@ -3208,6 +3229,7 @@ export namespace Prisma {
export type applicationOrderByWithAggregationInput = { export type applicationOrderByWithAggregationInput = {
id?: SortOrder id?: SortOrder
serverId?: SortOrder
name?: SortOrder name?: SortOrder
description?: SortOrderInput | SortOrder description?: SortOrderInput | SortOrder
icon?: SortOrder icon?: SortOrder
@ -3226,6 +3248,7 @@ export namespace Prisma {
OR?: applicationScalarWhereWithAggregatesInput[] OR?: applicationScalarWhereWithAggregatesInput[]
NOT?: applicationScalarWhereWithAggregatesInput | applicationScalarWhereWithAggregatesInput[] NOT?: applicationScalarWhereWithAggregatesInput | applicationScalarWhereWithAggregatesInput[]
id?: IntWithAggregatesFilter<"application"> | number id?: IntWithAggregatesFilter<"application"> | number
serverId?: IntWithAggregatesFilter<"application"> | number
name?: StringWithAggregatesFilter<"application"> | string name?: StringWithAggregatesFilter<"application"> | string
description?: StringNullableWithAggregatesFilter<"application"> | string | null description?: StringNullableWithAggregatesFilter<"application"> | string | null
icon?: StringWithAggregatesFilter<"application"> | string icon?: StringWithAggregatesFilter<"application"> | string
@ -3289,6 +3312,7 @@ export namespace Prisma {
} }
export type applicationCreateInput = { export type applicationCreateInput = {
serverId?: number
name: string name: string
description?: string | null description?: string | null
icon: string icon: string
@ -3299,6 +3323,7 @@ export namespace Prisma {
export type applicationUncheckedCreateInput = { export type applicationUncheckedCreateInput = {
id?: number id?: number
serverId?: number
name: string name: string
description?: string | null description?: string | null
icon: string icon: string
@ -3308,6 +3333,7 @@ export namespace Prisma {
} }
export type applicationUpdateInput = { export type applicationUpdateInput = {
serverId?: IntFieldUpdateOperationsInput | number
name?: StringFieldUpdateOperationsInput | string name?: StringFieldUpdateOperationsInput | string
description?: NullableStringFieldUpdateOperationsInput | string | null description?: NullableStringFieldUpdateOperationsInput | string | null
icon?: StringFieldUpdateOperationsInput | string icon?: StringFieldUpdateOperationsInput | string
@ -3318,6 +3344,7 @@ export namespace Prisma {
export type applicationUncheckedUpdateInput = { export type applicationUncheckedUpdateInput = {
id?: IntFieldUpdateOperationsInput | number id?: IntFieldUpdateOperationsInput | number
serverId?: IntFieldUpdateOperationsInput | number
name?: StringFieldUpdateOperationsInput | string name?: StringFieldUpdateOperationsInput | string
description?: NullableStringFieldUpdateOperationsInput | string | null description?: NullableStringFieldUpdateOperationsInput | string | null
icon?: StringFieldUpdateOperationsInput | string icon?: StringFieldUpdateOperationsInput | string
@ -3328,6 +3355,7 @@ export namespace Prisma {
export type applicationCreateManyInput = { export type applicationCreateManyInput = {
id?: number id?: number
serverId?: number
name: string name: string
description?: string | null description?: string | null
icon: string icon: string
@ -3337,6 +3365,7 @@ export namespace Prisma {
} }
export type applicationUpdateManyMutationInput = { export type applicationUpdateManyMutationInput = {
serverId?: IntFieldUpdateOperationsInput | number
name?: StringFieldUpdateOperationsInput | string name?: StringFieldUpdateOperationsInput | string
description?: NullableStringFieldUpdateOperationsInput | string | null description?: NullableStringFieldUpdateOperationsInput | string | null
icon?: StringFieldUpdateOperationsInput | string icon?: StringFieldUpdateOperationsInput | string
@ -3347,6 +3376,7 @@ export namespace Prisma {
export type applicationUncheckedUpdateManyInput = { export type applicationUncheckedUpdateManyInput = {
id?: IntFieldUpdateOperationsInput | number id?: IntFieldUpdateOperationsInput | number
serverId?: IntFieldUpdateOperationsInput | number
name?: StringFieldUpdateOperationsInput | string name?: StringFieldUpdateOperationsInput | string
description?: NullableStringFieldUpdateOperationsInput | string | null description?: NullableStringFieldUpdateOperationsInput | string | null
icon?: StringFieldUpdateOperationsInput | string icon?: StringFieldUpdateOperationsInput | string
@ -3467,6 +3497,7 @@ export namespace Prisma {
export type applicationCountOrderByAggregateInput = { export type applicationCountOrderByAggregateInput = {
id?: SortOrder id?: SortOrder
serverId?: SortOrder
name?: SortOrder name?: SortOrder
description?: SortOrder description?: SortOrder
icon?: SortOrder icon?: SortOrder
@ -3477,10 +3508,12 @@ export namespace Prisma {
export type applicationAvgOrderByAggregateInput = { export type applicationAvgOrderByAggregateInput = {
id?: SortOrder id?: SortOrder
serverId?: SortOrder
} }
export type applicationMaxOrderByAggregateInput = { export type applicationMaxOrderByAggregateInput = {
id?: SortOrder id?: SortOrder
serverId?: SortOrder
name?: SortOrder name?: SortOrder
description?: SortOrder description?: SortOrder
icon?: SortOrder icon?: SortOrder
@ -3491,6 +3524,7 @@ export namespace Prisma {
export type applicationMinOrderByAggregateInput = { export type applicationMinOrderByAggregateInput = {
id?: SortOrder id?: SortOrder
serverId?: SortOrder
name?: SortOrder name?: SortOrder
description?: SortOrder description?: SortOrder
icon?: SortOrder icon?: SortOrder
@ -3501,6 +3535,7 @@ export namespace Prisma {
export type applicationSumOrderByAggregateInput = { export type applicationSumOrderByAggregateInput = {
id?: SortOrder id?: SortOrder
serverId?: SortOrder
} }
export type IntWithAggregatesFilter<$PrismaModel = never> = { export type IntWithAggregatesFilter<$PrismaModel = never> = {
@ -3601,6 +3636,14 @@ export namespace Prisma {
id?: SortOrder id?: SortOrder
} }
export type IntFieldUpdateOperationsInput = {
set?: number
increment?: number
decrement?: number
multiply?: number
divide?: number
}
export type StringFieldUpdateOperationsInput = { export type StringFieldUpdateOperationsInput = {
set?: string set?: string
} }
@ -3613,14 +3656,6 @@ export namespace Prisma {
set?: Date | string set?: Date | string
} }
export type IntFieldUpdateOperationsInput = {
set?: number
increment?: number
decrement?: number
multiply?: number
divide?: number
}
export type NestedIntFilter<$PrismaModel = never> = { export type NestedIntFilter<$PrismaModel = never> = {
equals?: number | IntFieldRefInput<$PrismaModel> equals?: number | IntFieldRefInput<$PrismaModel>
in?: number[] | ListIntFieldRefInput<$PrismaModel> in?: number[] | ListIntFieldRefInput<$PrismaModel>

View File

@ -92,6 +92,7 @@ exports.Prisma.TransactionIsolationLevel = makeStrictEnum({
exports.Prisma.ApplicationScalarFieldEnum = { exports.Prisma.ApplicationScalarFieldEnum = {
id: 'id', id: 'id',
serverId: 'serverId',
name: 'name', name: 'name',
description: 'description', description: 'description',
icon: 'icon', icon: 'icon',
@ -175,8 +176,8 @@ const config = {
} }
} }
}, },
"inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\n// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?\n// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init\n\ngenerator client {\n provider = \"prisma-client-js\"\n output = \"../lib/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel application {\n id Int @id @default(autoincrement())\n name String\n description String?\n icon String\n publicURL String\n localURL String?\n createdAt DateTime @default(now())\n}\n\nmodel server {\n id Int @id @default(autoincrement())\n name String\n os String?\n ip String?\n url String?\n}\n", "inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\n// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?\n// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init\n\ngenerator client {\n provider = \"prisma-client-js\"\n output = \"../lib/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel application {\n id Int @id @default(autoincrement())\n serverId Int @default(1)\n name String\n description String?\n icon String\n publicURL String\n localURL String?\n createdAt DateTime @default(now())\n}\n\nmodel server {\n id Int @id @default(autoincrement())\n name String\n os String?\n ip String?\n url String?\n}\n",
"inlineSchemaHash": "ddf72260e19ee586841a252bd3c8cf4f117ce15f0dc9aef0f129fd5d226787c0", "inlineSchemaHash": "f689d07c314e551dbb544b300c2eaf202c8b2a3439248ed3dbdc3eb508f94dc1",
"copyEngine": true "copyEngine": true
} }
@ -197,7 +198,7 @@ if (!fs.existsSync(path.join(__dirname, 'schema.prisma'))) {
config.isBundled = true config.isBundled = true
} }
config.runtimeDataModel = JSON.parse("{\"models\":{\"application\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"icon\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"publicURL\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"localURL\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"server\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"os\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ip\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{},\"types\":{}}") config.runtimeDataModel = JSON.parse("{\"models\":{\"application\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"serverId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"icon\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"publicURL\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"localURL\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":null,\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"server\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"os\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ip\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{},\"types\":{}}")
defineDmmfProperty(exports.Prisma, config.runtimeDataModel) defineDmmfProperty(exports.Prisma, config.runtimeDataModel)
config.engineWasm = undefined config.engineWasm = undefined
config.compilerWasm = undefined config.compilerWasm = undefined

View File

@ -1,5 +1,5 @@
{ {
"name": "prisma-client-07d58c262f4c41e54bcbbc55d879a689e13512206b7e87b3b603872e2010444b", "name": "prisma-client-f7cc69aeb506e155eedcc5da662a564d36a835b479dc7bc47312d45e3e955ebe",
"main": "index.js", "main": "index.js",
"types": "index.d.ts", "types": "index.d.ts",
"browser": "index-browser.js", "browser": "index-browser.js",

View File

@ -119,6 +119,7 @@ exports.Prisma.TransactionIsolationLevel = makeStrictEnum({
exports.Prisma.ApplicationScalarFieldEnum = { exports.Prisma.ApplicationScalarFieldEnum = {
id: 'id', id: 'id',
serverId: 'serverId',
name: 'name', name: 'name',
description: 'description', description: 'description',
icon: 'icon', icon: 'icon',

View File

@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "application" ADD COLUMN "serverId" INTEGER NOT NULL DEFAULT 1;

View File

@ -16,6 +16,7 @@ datasource db {
model application { model application {
id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
serverId Int @default(1)
name String name String
description String? description String?
icon String icon String