Skip to content

Commit

Permalink
added get cols api
Browse files Browse the repository at this point in the history
Signed-off-by: Tanmay Vaij <[email protected]>
  • Loading branch information
tanmayvaij committed Jan 2, 2025
1 parent ae31c68 commit 939a152
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 0 deletions.
49 changes: 49 additions & 0 deletions src/controllers/getColumns.controller.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import { Request, Response } from "express";
import { db } from "../config/db";

export const getTableColumnsController = (req: Request, res: Response) => {
const { tableName } = req.query;

// Validate input
if (!tableName || typeof tableName !== "string") {
res.status(400).json({
isSuccess: false,
message: "Table name is required and should be a string.",
});
return
}

// SQL query to retrieve columns
const query = `
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = ?
`;

// Execute the query
db.query(query, [tableName], (err, results: any[]) => {
if (err) {
console.error("Error retrieving columns:", err);
return res.status(500).json({
isSuccess: false,
error: err.message,
});
}

// Check if the table exists
if (results.length === 0) {
return res.status(404).json({
isSuccess: false,
message: `Table '${tableName}' not found.`,
});
}

// Return the columns
const columns = results.map((row: any) => row.COLUMN_NAME);

return res.status(200).json({
isSuccess: true,
columns: columns,
});
});
};
2 changes: 2 additions & 0 deletions src/controllers/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@ export * from "./deleteTable.controller";

export * from "./insertData.controller";
export * from "./fetchData.controller";

export * from "./getColumns.controller";
2 changes: 2 additions & 0 deletions src/routers/admin.routes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@ import {
createTableController,
deleteTableController,
getAllTablesController,
getTableColumnsController,
} from "../controllers";

export const adminRouter = Router();

adminRouter.route("/create-table").post(createTableController);
adminRouter.route("/delete-table").delete(deleteTableController);
adminRouter.route("/get-tables").get(getAllTablesController);
adminRouter.route("/get-columns").get(getTableColumnsController);

0 comments on commit 939a152

Please sign in to comment.