ML-Learner / Backend_node /src /controllers /Questions.controller.ts
VashuTheGreat2's picture
Upload folder using huggingface_hub
c01955c verified
import { expressRepre } from "@vashuthegreat/vexpress";
import ApiError from "../utils/ApiError.js";
import asyncHandler from "../utils/asyncHandler.js";
import ApiResponse from "../utils/ApiResponse.js";
import { Query } from "mongoose";
import connectsql from "../db/connectsql.js";
import { Request,Response } from "express";
import fs from "fs"
import logger from "../logger/create.logger.js";
let db:any;
(async () => {
db = await connectsql();
})();
async function runquery(query: string, params: any[] = []) {
const [res]=await db.execute(query, params)
return res
}
export const add_questions=expressRepre(
{
summary:"add questions",
body:{
"id": 2,
"title": "Transpose of a Matrix",
"difficulty": "easy",
"category": "linear algebra",
"problem_description": "V3JpdGUgYSBQeXRob24gZnVuY3Rpb24gdGhhdCBjb21wdXRlcyB0aGUgdHJhbnNwb3NlIG9mIGEgZ2l2ZW4gbWF0cml4Lg==",
"starter_code": "from tinygrad.tensor import Tensor\n\ndef transpose_matrix_tg(a:Tensor) -> Tensor:\n \"\"\"\n Transpose a 2D matrix `a` using tinygrad.\n Inputs are tinygrad Tensors.\n Returns a transposed Tensor.\n \"\"\"\n pass",
"example_input": "a = [[1,2,3],[4,5,6]]",
"example_output": "[[1,4],[2,5],[3,6]]",
"example_reasoning": "The transpose of a matrix is obtained by flipping rows and columns.",
"learn_content": "CiMjIFRyYW5zcG9zZSBvZiBhIE1hdHJpeAoKTGV0J3MgY29uc2lkZXIgYSBtYXRyaXggJE0kIGFuZCBpdHMgdHJhbnNwb3NlICRNXlQkOgoKKipPcmlnaW5hbCBNYXRyaXggJE0kOioqCiQkCk0gPSBcYmVnaW57cG1hdHJpeH0gCmEgJiBiICYgYyBcXCAKZCAmIGUgJiBmIApcZW5ke3BtYXRyaXh9CiQkCgoqKlRyYW5zcG9zZWQgTWF0cml4ICRNXlQkOioqCiQkCk1eVCA9IFxiZWdpbntwbWF0cml4fSAKYSAmIGQgXFwgCmIgJiBlIFxcIApjICYgZiAKXGVuZHtwbWF0cml4fQokJAoKIyMjIEV4cGxhbmF0aW9uOgpUcmFuc3Bvc2luZyBhIG1hdHJpeCBpbnZvbHZlcyBjb252ZXJ0aW5nIGl0cyByb3dzIGludG8gY29sdW1ucyBhbmQgdmljZSB2ZXJzYS4gVGhpcyBvcGVyYXRpb24gaXMgZnVuZGFtZW50YWwgaW4gbGluZWFyIGFsZ2VicmEgZm9yIHZhcmlvdXMgY29tcHV0YXRpb25zIGFuZCB0cmFuc2Zvcm1hdGlvbnMu",
"solution_code": "from tinygrad.tensor import Tensor\n\ndef transpose_matrix_tg(a) -> Tensor:\n \"\"\"\n Transpose a 2D matrix `a` using tinygrad.\n Inputs are tinygrad Tensors.\n Returns a transposed Tensor.\n \"\"\"\n return a.T",
"test_cases": [
{
"test": "print(transpose_matrix_tg(Tensor([[1,2],[3,4],[5,6]])))",
"expected_output": "[[1, 3, 5], [2, 4, 6]]"
},
{
"test": "print(transpose_matrix_tg(Tensor([[1,2,3],[4,5,6]])))",
"expected_output": "[[1, 4], [2, 5], [3, 6]]"
}
]
},
response:"question added"
},
asyncHandler(async (req,res)=>{
const {id,title,difficulty,category,problem_description,starter_code,example_input,example_output,example_reasoning,learn_content,solution_code,test_cases,function_name}=req.body;
logger.info(`Adding question: ${title} (ID: ${id})`);
const data=await runquery(`insert into questions (id,title,difficulty,category,problem_description,starter_code,example_input,example_output,example_reasoning,learn_content,solution_code,test_cases,function_name) values (?,?,?,?,?,?,?,?,?,?,?,?,?)`, [id,title,difficulty,category,problem_description,starter_code,example_input,example_output,example_reasoning,learn_content,solution_code, JSON.stringify(test_cases), function_name])
res.status(200).json(new ApiResponse(200,data))
})
)
export const get_available_categories=expressRepre(
{
summary :"fet avalable questions categories",
response:"avalable categories"
},
asyncHandler(async (req:Request,res:Response)=>{
const data=await runquery(`select distinct category from questions `);
const categories:string[]=[]
data.forEach((element:any) => {
categories.push(element.category)
});
res.status(200).json(new ApiResponse(200,categories));
})
)
export const fetch_all_questions=expressRepre(
{
},
asyncHandler(async (req,res)=>{
const data=await runquery(`select * from questions`)
res.status(200).json(new ApiResponse(200,data))
})
)
export const fetch_questionById=expressRepre({
summary:"give id to fetch question",
params:{
"question_id":"1"
},
response:"a question"
},asyncHandler(async (req:Request,res:Response)=>{
const { question_id } = req.params as { question_id: any };
logger.info(`Fetching question by ID: ${question_id}`);
const data=await runquery(`select * from questions where id=?`, [question_id])
res.status(200).json(new ApiResponse(200,data))
}))
export const fetch_questionBycategory=expressRepre({
summary:"give id to fetch question",
params:{
"category":"Linear Algebra"
},
response:"a question"
},asyncHandler(async (req:Request,res:Response)=>{
let { category } = req.params as { category: string };
category=category.toLowerCase()
const data=await runquery(`select * from questions where category=?`, [category])
res.status(200).json(new ApiResponse(200,data))
}))
export const fetch_questionByDifficulty=expressRepre({
summary:"give difficulty to fetch question",
params:{
"difficulty":"easy"
},
response:"a question"
},asyncHandler(async (req:Request,res:Response)=>{
let { difficulty } = req.params as { difficulty: string };
difficulty=difficulty.toLowerCase()
const data=await runquery(`select * from questions where difficulty=?`, [difficulty])
res.status(200).json(new ApiResponse(200,data))
}))