feat: minor cleanups

This commit is contained in:
Raju kadel
2024-07-17 18:54:03 +05:45
parent 8c185fcd54
commit e993666add
8 changed files with 65 additions and 106 deletions
@@ -63,15 +63,6 @@ const create = (app: PublicAPI) => {
const { company, user } = await withCompanyAuth(c);
const body = await c.req.json();
const zodParsed = RequestBodySchema.safeParse(body);
if (!zodParsed.success) {
const errorMessage = zodParsed.error.errors.map((err) => err.message);
throw new ApiError({
code: "BAD_REQUEST",
message: String(errorMessage),
});
}
const payload = {
companyId: company.id,
@@ -81,13 +72,10 @@ const create = (app: PublicAPI) => {
id: user.id,
name: user.name as string,
},
data: zodParsed.data as TypeStakeholderArray,
data: body as TypeStakeholderArray,
};
try {
await addStakeholders({
db,
payload,
});
await addStakeholders(payload);
} catch (error) {
if (error instanceof Prisma.PrismaClientKnownRequestError) {
if (error.code === "P2002") {
@@ -1,5 +1,5 @@
import { withCompanyAuth } from "@/server/api/auth";
import { ErrorResponses } from "@/server/api/error";
import { ApiError, ErrorResponses } from "@/server/api/error";
import type { PublicAPI } from "@/server/api/hono";
import {
StakeholderSchema,
@@ -59,11 +59,25 @@ const route = createRoute({
},
});
const delete_ = (app: PublicAPI) => {
const deleteOne = (app: PublicAPI) => {
app.openapi(route, async (c: Context) => {
const { company, user } = await withCompanyAuth(c);
const { stakeholderId } = c.req.param();
const foundStakeholder = await db.stakeholder.findUnique({
where: {
id: stakeholderId,
companyId: company.id,
},
});
if (!foundStakeholder) {
throw new ApiError({
code: "NOT_FOUND",
message: "No stakeholder with the provided Id",
});
}
const payload = {
companyId: company.id,
stakeholderId: stakeholderId as string,
@@ -72,10 +86,7 @@ const delete_ = (app: PublicAPI) => {
userAgent: getHonoUserAgent(c.req),
};
const { deletedStakeholder } = await deleteStakeholder({
db,
payload,
});
const { deletedStakeholder } = await deleteStakeholder(payload);
return c.json(
{
@@ -87,4 +98,4 @@ const delete_ = (app: PublicAPI) => {
});
};
export default delete_;
export default deleteOne;
@@ -1,6 +1,6 @@
import type { PublicAPI } from "@/server/api/hono";
import create from "./create";
import delete_ from "./delete";
import deleteOne from "./delete";
import getMany from "./getMany";
import getOne from "./getOne";
import update from "./update";
@@ -10,7 +10,7 @@ const registerStakeholderRoutes = (api: PublicAPI) => {
getOne(api);
getMany(api);
update(api);
delete_(api);
deleteOne(api);
};
export default registerStakeholderRoutes;
@@ -64,6 +64,19 @@ const update = (app: PublicAPI) => {
console.log({ body });
const { id, ...rest } = body;
const foundStakeholder = await db.stakeholder.findFirst({
where: {
id: stakeholderId,
},
});
if (!foundStakeholder) {
throw new ApiError({
code: "NOT_FOUND",
message: "No stakeholder with provided id",
});
}
const payload = {
stakeholderId: stakeholderId,
companyId: company.id,
@@ -76,10 +89,7 @@ const update = (app: PublicAPI) => {
},
};
const { updatedStakeholder } = await updateStakeholder({
db,
payload,
});
const { updatedStakeholder } = await updateStakeholder(payload);
if (!updatedStakeholder) {
throw new ApiError({
@@ -1,25 +1,19 @@
import { Audit } from "@/server/audit";
import { db } from "@/server/db";
import type { TypeStakeholderArray } from "@/trpc/routers/stakeholder-router/schema";
import type { PrismaClient } from "@prisma/client";
type AddStakeholderOptions = {
db: PrismaClient;
payload: {
companyId: string;
requestIp: string;
userAgent: string;
user: {
id: string;
name: string;
};
data: TypeStakeholderArray;
companyId: string;
requestIp: string;
userAgent: string;
user: {
id: string;
name: string;
};
data: TypeStakeholderArray;
};
export const addStakeholders = async ({
db,
payload,
}: AddStakeholderOptions) => {
export const addStakeholders = async (payload: AddStakeholderOptions) => {
const { companyId, requestIp, userAgent, user, data } = payload;
await db.$transaction(async (tx) => {
@@ -1,42 +1,20 @@
import { ApiError } from "@/server/api/error";
import { Audit } from "@/server/audit";
import type { PrismaClient } from "@prisma/client";
import { commonRouter } from "./../../../trpc/routers/common/router";
import { db } from "@/server/db";
type DeleteStakeholderOption = {
db: PrismaClient;
payload: {
companyId: string;
stakeholderId: string;
requestIp: string;
userAgent: string;
user: {
id: string;
name: string;
};
companyId: string;
stakeholderId: string;
requestIp: string;
userAgent: string;
user: {
id: string;
name: string;
};
};
export const deleteStakeholder = async ({
db,
payload,
}: DeleteStakeholderOption) => {
export const deleteStakeholder = async (payload: DeleteStakeholderOption) => {
const { companyId, stakeholderId, requestIp, userAgent, user } = payload;
const foundStakeholder = await db.stakeholder.findUnique({
where: {
id: stakeholderId,
companyId,
},
});
if (!foundStakeholder) {
throw new ApiError({
code: "NOT_FOUND",
message: "No stakeholder with the provided Id",
});
}
const { deletedStakeholder } = await db.$transaction(async (tx) => {
const deletedStakeholder = await tx.stakeholder.delete({
where: {
@@ -1,12 +1,10 @@
import type { PrismaClient } from "@prisma/client";
import { db } from "@/server/db";
type GetStakeholderById = {
db: PrismaClient;
stakeholderId: string;
};
export const getStakeholderById = async ({
db,
stakeholderId,
}: GetStakeholderById) => {
return await db.stakeholder.findUniqueOrThrow({
@@ -1,42 +1,22 @@
import { ApiError } from "@/server/api/error";
import { Audit } from "@/server/audit";
import { db } from "@/server/db";
import type { UpdateStakeholderMutationType } from "@/trpc/routers/stakeholder-router/schema";
import type { PrismaClient } from "@prisma/client";
export type UpdateStakeholderOptions = {
db: PrismaClient;
payload: {
stakeholderId: string;
companyId: string;
requestIp: string;
userAgent: string;
user: {
id: string;
name: string;
};
data: Omit<UpdateStakeholderMutationType, "id">;
stakeholderId: string;
companyId: string;
requestIp: string;
userAgent: string;
user: {
id: string;
name: string;
};
data: Omit<UpdateStakeholderMutationType, "id">;
};
export const updateStakeholder = async ({
db,
payload,
}: UpdateStakeholderOptions) => {
export const updateStakeholder = async (payload: UpdateStakeholderOptions) => {
const { requestIp, userAgent, user, data } = payload;
const foundStakeholder = await db.stakeholder.findFirst({
where: {
id: payload.stakeholderId,
},
});
if (!foundStakeholder) {
throw new ApiError({
code: "NOT_FOUND",
message: "No stakeholder with provided id",
});
}
const { updatedStakeholder } = await db.$transaction(async (tx) => {
const updatedStakeholder = await db.stakeholder.update({
where: {