From 9b822ad328006e98e9ff9cb823c92aea75c35479 Mon Sep 17 00:00:00 2001
From: headlessdev
Date: Fri, 11 Apr 2025 17:35:06 +0200
Subject: [PATCH] Add Application API & Functionality
---
app/api/applications/add/route.ts | 33 +++++++++++++++++++++
app/dashboard/applications/Applications.tsx | 31 +++++++++++++++----
package-lock.json | 2 +-
package.json | 1 +
4 files changed, 60 insertions(+), 7 deletions(-)
create mode 100644 app/api/applications/add/route.ts
diff --git a/app/api/applications/add/route.ts b/app/api/applications/add/route.ts
new file mode 100644
index 0000000..7af7265
--- /dev/null
+++ b/app/api/applications/add/route.ts
@@ -0,0 +1,33 @@
+import { NextResponse, NextRequest } from "next/server";
+import { PrismaClient } from '@/lib/generated/prisma'
+
+interface AddRequest {
+ name: string;
+ description: string;
+ icon: string;
+ publicURL: string;
+ localURL: string;
+}
+
+const prisma = new PrismaClient();
+
+export async function POST(request: NextRequest) {
+ try {
+ const body: AddRequest = await request.json();
+ const { name, description, icon, publicURL, localURL } = body;
+
+ const application = await prisma.application.create({
+ data: {
+ name,
+ description,
+ icon,
+ publicURL,
+ localURL
+ }
+ });
+
+ return NextResponse.json({ message: "Success", application });
+ } catch (error: any) {
+ return NextResponse.json({ error: error.message }, { status: 500 });
+ }
+}
diff --git a/app/dashboard/applications/Applications.tsx b/app/dashboard/applications/Applications.tsx
index b08da73..4a00a76 100644
--- a/app/dashboard/applications/Applications.tsx
+++ b/app/dashboard/applications/Applications.tsx
@@ -1,3 +1,5 @@
+"use client";
+
import { AppSidebar } from "@/components/app-sidebar"
import {
Breadcrumb,
@@ -46,7 +48,24 @@ import { Input } from "@/components/ui/input"
import { Label } from "@/components/ui/label"
import { Textarea } from "@/components/ui/textarea"
+import { useState } from "react";
+import axios from 'axios';
+
export default function Dashboard() {
+ const [name, setName] = useState("");
+ const [description, setDescription] = useState("");
+ const [icon, setIcon] = useState("");
+ const [publicURL, setPublicURL] = useState("");
+ const [localURL, setLocalURL] = useState("");
+
+ const add = async () => {
+ try {
+ const response = await axios.post('/api/applications/add', { name, description, icon, publicURL, localURL });
+ } catch (error: any) {
+ console.log(error.response.data);
+ }
+ }
+
return (
@@ -88,30 +107,30 @@ export default function Dashboard() {
-
+ setName(e.target.value)}/>
-
+
-
+ setIcon(e.target.value)}/>
-
+ setPublicURL(e.target.value)}/>
-
+ setLocalURL(e.target.value)}/>
Cancel
- Add
+
diff --git a/package-lock.json b/package-lock.json
index 6264b13..a9f7be5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,6 +8,7 @@
"name": "corecontrol",
"version": "0.1.0",
"dependencies": {
+ "@prisma/client": "^6.6.0",
"@prisma/extension-accelerate": "^1.3.0",
"@radix-ui/react-alert-dialog": "^1.1.7",
"@radix-ui/react-dialog": "^1.1.7",
@@ -1045,7 +1046,6 @@
"integrity": "sha512-vfp73YT/BHsWWOAuthKQ/1lBgESSqYqAWZEYyTdGXyFAHpmewwWL2Iz6ErIzkj4aHbuc6/cGSsE6ZY+pBO04Cg==",
"hasInstallScript": true,
"license": "Apache-2.0",
- "peer": true,
"engines": {
"node": ">=18.18"
},
diff --git a/package.json b/package.json
index f7706aa..9e49748 100644
--- a/package.json
+++ b/package.json
@@ -9,6 +9,7 @@
"lint": "next lint"
},
"dependencies": {
+ "@prisma/client": "^6.6.0",
"@prisma/extension-accelerate": "^1.3.0",
"@radix-ui/react-alert-dialog": "^1.1.7",
"@radix-ui/react-dialog": "^1.1.7",