Files
Schema-Studio/src/api-server/controller/projectController.ts

346 lines
8.5 KiB
TypeScript
Raw Normal View History

2025-08-27 17:48:45 +05:30
import { Request, Response } from "express";
import {
DeleteProject,
2025-08-27 17:48:45 +05:30
GetNodesInProject,
projectCreationService,
projectDatas,
2025-10-22 10:28:18 +05:30
projectModification,
ViewProjectService,
2025-08-27 17:48:45 +05:30
} from "../../shared/services/projectService";
import { AuthenticatedRequest } from "../../shared/utils/token";
2025-08-27 17:48:45 +05:30
export const projectCreationController = async (
2025-10-22 10:28:18 +05:30
req: AuthenticatedRequest,
2025-08-27 17:48:45 +05:30
res: Response
): Promise<void> => {
try {
2025-10-22 10:28:18 +05:30
const { organization, userId } = req.user || {};
2025-08-27 17:48:45 +05:30
const {
2025-10-22 10:28:18 +05:30
language,
2025-08-27 17:48:45 +05:30
projectName,
2025-10-22 10:28:18 +05:30
apiProtocol,
2025-08-27 17:48:45 +05:30
application,
architecture,
description,
} = req.body;
if (
!organization ||
2025-10-22 10:28:18 +05:30
!language ||
2025-08-27 17:48:45 +05:30
!projectName ||
!userId ||
2025-10-22 10:28:18 +05:30
!apiProtocol ||
!architecture ||
!application
2025-08-27 17:48:45 +05:30
) {
res.status(400).json({
message: "All fields are required",
});
return;
}
const data = {
organization,
projectName,
2025-10-22 10:28:18 +05:30
language,
description,
application,
userId,
2025-10-22 10:28:18 +05:30
apiProtocol,
2025-08-27 17:48:45 +05:30
architecture,
};
const result = await projectCreationService(data);
2025-10-22 10:28:18 +05:30
console.log("result:projectcreate ", result);
2025-08-27 17:48:45 +05:30
switch (result.status) {
case "Project Already Exists":
res.status(403).json({
message: "Project Already Exists",
});
break;
case "Already MVC architecture assigned to this projectId":
res.status(403).json({
message: "Already MVC architecture assigned to this projectId",
});
break;
case "Project creation unsuccessfull":
res.status(200).json({
message: "Project creation unsuccessfull",
});
break;
case "Success":
res.status(200).json({
message: "Project created successfully",
projectId: result.data,
});
break;
case "New architecture":
res.status(200).json({
message: "New architecture",
});
break;
default:
res.status(500).json({
message: "Internal server error",
});
break;
}
} catch (error) {
res.status(500).json({
message: "Unknown error",
});
}
};
export const getProjects = async (
req: AuthenticatedRequest,
2025-08-27 17:48:45 +05:30
res: Response
): Promise<void> => {
try {
const { organization, userId } = req.user || {};
2025-10-22 10:28:18 +05:30
const { skip, limit } = req.params;
if (!organization || !userId) {
2025-08-27 17:48:45 +05:30
res.status(400).json({
message: "All fields are required",
});
return;
}
2025-10-22 10:28:18 +05:30
const skipdata = parseInt(skip);
const limitdata = parseInt(limit);
const result = await projectDatas({
organization,
userId,
skipdata,
limitdata,
});
2025-08-27 17:48:45 +05:30
switch (result.status) {
case "No project found":
2025-10-22 10:28:18 +05:30
res.status(404).json({});
2025-08-27 17:48:45 +05:30
break;
case "Success":
2025-10-22 10:28:18 +05:30
res.status(200).json({ data: result.data });
2025-08-27 17:48:45 +05:30
break;
default:
res.status(500).json({
message: "Internal server error",
});
break;
}
} catch (error) {
res.status(500).json({
message: "Unknown error",
});
}
};
export const NodesCollectionsBasedOnproject = async (
2025-10-22 10:28:18 +05:30
req: AuthenticatedRequest,
2025-08-27 17:48:45 +05:30
res: Response
): Promise<void> => {
try {
2025-10-22 10:28:18 +05:30
const { organization, userId } = req.user || {};
const { projectId } = req.params;
if (!organization || !projectId || !userId) {
2025-08-27 17:48:45 +05:30
res.status(400).json({
message: "All fields are required",
});
return;
}
const data = {
organization,
projectId,
2025-10-22 10:28:18 +05:30
userId,
2025-08-27 17:48:45 +05:30
};
const result = await GetNodesInProject(data);
switch (result.status) {
case "project not found":
2025-10-22 10:28:18 +05:30
res.status(404).json({
2025-08-27 17:48:45 +05:30
message: "project not found",
});
break;
2025-10-22 10:28:18 +05:30
case "User not found":
res.status(404).json({
message: "User not found",
});
break;
2025-08-27 17:48:45 +05:30
case "No collection Nodes present":
res.status(200).json({
message: "No collection Nodes present",
Collections: result.data,
});
break;
case "Success":
res.status(200).json(result.data);
break;
default:
res.status(500).json({
message: "Internal server error",
});
break;
}
} catch (error) {
res.status(500).json({
message: "Unknown error",
});
}
};
export const accessAproject = async (
req: AuthenticatedRequest,
res: Response
): Promise<void> => {
try {
const { organization, userId } = req.user || {};
const { projectId } = req.params;
if (!organization || !userId || !projectId) {
res.status(400).json({
message: "All fields are required",
});
return;
}
const result = await ViewProjectService({
organization,
userId,
projectId,
});
switch (result.status) {
case "No project found":
res.status(200).json({});
break;
case "Datas not found":
res.status(200).json({ message: "Datas not found" });
break;
case "Success":
res.status(200).json({
projectDatas: result.data,
});
break;
default:
res.status(500).json({
message: "Internal server error",
});
break;
}
} catch (error) {
res.status(500).json({
message: "Unknown error",
});
}
};
export const deleteProjectController = async (
req: AuthenticatedRequest,
res: Response
): Promise<void> => {
try {
const { organization, userId } = req.user || {};
const { projectId } = req.params;
if (!organization || !userId || !projectId) {
res.status(400).json({
message: "All fields are required",
});
return;
}
const result = await DeleteProject({
organization,
userId,
projectId,
});
switch (result.status) {
case "User not found":
2025-10-22 10:28:18 +05:30
res.status(404).json({ message: "User not found" });
break;
case "Project not found":
2025-10-22 10:28:18 +05:30
res.status(404).json({ message: "Project not found" });
break;
case "No access granted to delete this project":
res
.status(200)
.json({ message: "No access granted to delete this project" });
break;
case "Project Delete unsuccessfull":
res.status(200).json({ message: "Project Delete unsuccessfull" });
break;
case "Success":
res.status(200).json({
message: "Project deleted successfully",
});
break;
default:
res.status(500).json({
message: "Internal server error",
});
break;
}
} catch (error) {
res.status(500).json({
message: "Unknown error",
});
}
};
2025-10-22 10:28:18 +05:30
export const updateProjectController = async (
req: AuthenticatedRequest,
res: Response
): Promise<void> => {
try {
const { organization, userId } = req.user || {};
const {
projectId,
projectName,
application,
description,
language,
architecture,
} = req.body;
if (!organization || !userId || !projectId) {
res.status(400).json({
message: "All fields are required",
});
return;
}
const result = await projectModification({
projectId,
organization,
userId,
projectName,
application,
description,
language,
architecture,
});
switch (result.status) {
case "User not found":
res.status(404).json({ message: "User not found" });
break;
case "Project not found":
res.status(404).json({ message: "Project not found" });
break;
case "No access granted to delete this project":
res
.status(200)
.json({ message: "No access granted to update this project" });
break;
case "Project update unsuccessfull":
res.status(200).json({ message: "Project update unsuccessfull" });
break;
case "Success":
res.status(200).json({
message: "Project updated successfully",
});
break;
default:
res.status(500).json({
message: "Internal server error",
});
break;
}
} catch (error) {
res.status(500).json({
message: "Unknown error",
});
}
};