refactor: adjust queries

This commit is contained in:
Mauricio Siu
2025-02-15 23:01:36 -06:00
parent 78c72b6337
commit 515d65d993
23 changed files with 538 additions and 138 deletions

View File

@@ -33,7 +33,7 @@ import { sshRouter } from "./routers/ssh-key";
import { stripeRouter } from "./routers/stripe";
import { swarmRouter } from "./routers/swarm";
import { userRouter } from "./routers/user";
import { organizationRouter } from "./routers/organization";
/**
* This is the primary router for your server.
*
@@ -75,6 +75,7 @@ export const appRouter = createTRPCRouter({
server: serverRouter,
stripe: stripeRouter,
swarm: swarmRouter,
organization: organizationRouter,
});
// export type definition of API

View File

@@ -32,10 +32,7 @@ export const certificateRouter = createTRPCRouter({
.input(apiFindCertificate)
.query(async ({ input, ctx }) => {
const certificates = await findCertificateById(input.certificateId);
if (
IS_CLOUD &&
certificates.organizationId !== ctx.session.activeOrganizationId
) {
if (certificates.organizationId !== ctx.session.activeOrganizationId) {
throw new TRPCError({
code: "UNAUTHORIZED",
message: "You are not allowed to access this certificate",
@@ -47,10 +44,7 @@ export const certificateRouter = createTRPCRouter({
.input(apiFindCertificate)
.mutation(async ({ input, ctx }) => {
const certificates = await findCertificateById(input.certificateId);
if (
IS_CLOUD &&
certificates.organizationId !== ctx.session.activeOrganizationId
) {
if (certificates.organizationId !== ctx.session.activeOrganizationId) {
throw new TRPCError({
code: "UNAUTHORIZED",
message: "You are not allowed to delete this certificate",
@@ -61,13 +55,7 @@ export const certificateRouter = createTRPCRouter({
}),
all: adminProcedure.query(async ({ ctx }) => {
return await db.query.certificates.findMany({
// TODO: Remove this line when the cloud version is ready
...(IS_CLOUD && {
where: eq(
certificates.organizationId,
ctx.session.activeOrganizationId,
),
}),
where: eq(certificates.organizationId, ctx.session.activeOrganizationId),
});
}),
});

View File

@@ -0,0 +1,86 @@
import { adminProcedure, createTRPCRouter } from "../trpc";
import { z } from "zod";
import { db } from "@/server/db";
import { member, organization } from "@/server/db/schema";
import { nanoid } from "nanoid";
import { desc, eq } from "drizzle-orm";
import { TRPCError } from "@trpc/server";
export const organizationRouter = createTRPCRouter({
create: adminProcedure
.input(
z.object({
name: z.string(),
}),
)
.mutation(async ({ ctx, input }) => {
const result = await db
.insert(organization)
.values({
...input,
slug: nanoid(),
createdAt: new Date(),
ownerId: ctx.user.ownerId,
})
.returning()
.then((res) => res[0]);
if (!result) {
throw new TRPCError({
code: "INTERNAL_SERVER_ERROR",
message: "Failed to create organization",
});
}
const memberResult = await db.insert(member).values({
organizationId: result.id,
role: "owner",
createdAt: new Date(),
userId: ctx.user.id,
});
return result;
}),
all: adminProcedure.query(async ({ ctx }) => {
return await db.query.organization.findMany({
where: eq(organization.ownerId, ctx.user.ownerId),
orderBy: [desc(organization.createdAt)],
});
}),
one: adminProcedure
.input(
z.object({
organizationId: z.string(),
}),
)
.query(async ({ ctx, input }) => {
return await db.query.organization.findFirst({
where: eq(organization.id, input.organizationId),
});
}),
update: adminProcedure
.input(
z.object({
organizationId: z.string(),
name: z.string(),
}),
)
.mutation(async ({ ctx, input }) => {
const result = await db
.update(organization)
.set({ name: input.name })
.where(eq(organization.id, input.organizationId))
.returning();
return result[0];
}),
delete: adminProcedure
.input(
z.object({
organizationId: z.string(),
}),
)
.mutation(async ({ ctx, input }) => {
const result = await db
.delete(organization)
.where(eq(organization.id, input.organizationId));
return result;
}),
});

View File

@@ -16,8 +16,8 @@ import {
updateRegistry,
} from "@dokploy/server";
import { TRPCError } from "@trpc/server";
import { adminProcedure, createTRPCRouter, protectedProcedure } from "../trpc";
import { eq } from "drizzle-orm";
import { adminProcedure, createTRPCRouter, protectedProcedure } from "../trpc";
export const registryRouter = createTRPCRouter({
create: adminProcedure

View File

@@ -24,7 +24,6 @@ export const sshRouter = createTRPCRouter({
.input(apiCreateSshKey)
.mutation(async ({ input, ctx }) => {
try {
console.log(ctx.user.ownerId);
await createSshKey({
...input,
organizationId: ctx.session.activeOrganizationId,

View File

@@ -2,10 +2,17 @@ import { apiFindOneUser, apiFindOneUserByAuth } from "@/server/db/schema";
import { findUserByAuthId, findUserById, findUsers } from "@dokploy/server";
import { TRPCError } from "@trpc/server";
import { adminProcedure, createTRPCRouter, protectedProcedure } from "../trpc";
import { eq } from "drizzle-orm";
import { member } from "@dokploy/server/db/schema";
import { db } from "@dokploy/server/db";
export const userRouter = createTRPCRouter({
all: adminProcedure.query(async ({ ctx }) => {
return await findUsers(ctx.user.adminId);
return await db.query.member.findMany({
where: eq(member.organizationId, ctx.session.activeOrganizationId),
with: {
user: true,
},
});
}),
byAuthId: protectedProcedure
.input(apiFindOneUserByAuth)