diff --git a/prisma/schema.prisma b/prisma/schema.prisma
index 6d78c6a..d06d0da 100644
--- a/prisma/schema.prisma
+++ b/prisma/schema.prisma
@@ -64,3 +64,8 @@ model VerificationToken {
@@unique([identifier, token])
}
+
+model Device {
+ id String @id @default(cuid())
+ name String
+}
diff --git a/src/pages/dev.tsx b/src/pages/dev.tsx
new file mode 100644
index 0000000..315a569
--- /dev/null
+++ b/src/pages/dev.tsx
@@ -0,0 +1,120 @@
+import { type NextPage } from "next";
+import Head from "next/head";
+import Link from "next/link";
+import { signIn, signOut, useSession } from "next-auth/react";
+import { useState } from "react";
+import { api } from "~/utils/api";
+
+const Home: NextPage = () => {
+ const hello = api.example.hello.useQuery({ text: "from tRPC" });
+
+
+ return (
+ <>
+
+ Create T3 App
+
+
+
+
+
+
+ >
+ );
+};
+
+export default Home;
+
+const AuthShowcase: React.FC = () => {
+ const [newDevice, setNewDevice] = useState("");
+ const addDevice = api.device.addDevice.useMutation();
+ const device = api.device.getAll.useQuery();
+
+ const { data: sessionData } = useSession();
+
+ const { data: secretMessage } = api.example.getSecretMessage.useQuery(
+ undefined, // no input
+ { enabled: sessionData?.user !== undefined },
+ );
+
+
+
+ return (
+
+
+ {sessionData && Logged in as {sessionData.user?.name}}
+ {secretMessage && - {secretMessage}}
+
+
+ Devices
+
+
+ {
+ !device.data ? "Loading tRPC query..."
+ :
+ device.data.map((device) => (
+
+ ))
+ }
+
+
+
Create Device
+
+
+
+ );
+};
+
+
+const Navbar: React.FC = () => {
+ const { data: sessionData } = useSession();
+ return (
+
+
+
![]()
+
HerZ NSOT
+
+
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/server/api/root.ts b/src/server/api/root.ts
index 93fba92..1ccf702 100644
--- a/src/server/api/root.ts
+++ b/src/server/api/root.ts
@@ -1,5 +1,6 @@
import { createTRPCRouter } from "~/server/api/trpc";
import { exampleRouter } from "~/server/api/routers/example";
+import { deviceRouter } from "~/server/api/routers/device";
/**
* This is the primary router for your server.
@@ -8,6 +9,7 @@ import { exampleRouter } from "~/server/api/routers/example";
*/
export const appRouter = createTRPCRouter({
example: exampleRouter,
+ device: deviceRouter,
});
// export type definition of API
diff --git a/src/server/api/routers/device.ts b/src/server/api/routers/device.ts
new file mode 100644
index 0000000..dbb44cd
--- /dev/null
+++ b/src/server/api/routers/device.ts
@@ -0,0 +1,45 @@
+import { z } from "zod";
+
+import {
+ createTRPCRouter,
+ publicProcedure,
+ protectedProcedure,
+} from "~/server/api/trpc";
+
+export const deviceRouter = createTRPCRouter({
+ getAll: protectedProcedure.query(async ({ ctx }) => {
+ try {
+ return await ctx.prisma.device.findMany({
+ select: {
+ id: true,
+ name: true,
+ },
+ orderBy: {
+ name: "asc",
+ },
+ });
+ }
+ catch (err) {
+ console.log(err);
+ }
+ }),
+
+ addDevice: protectedProcedure
+ .input(
+ z.object({
+ name: z.string()
+ })
+ )
+ .mutation(async ({ input, ctx }) => {
+ try {
+ await ctx.prisma.device.create({
+ data: {
+ name: input.name,
+ },
+ });
+ }
+ catch (err) {
+ console.log(err);
+ }
+ }),
+});