11import { Request , Response } from "express" ;
2- import { ISubmissionLearnify , ISubmissionRequest } from "../interfaces/submission.interface" ;
2+ import {
3+ ISubmissionLearnify ,
4+ ISubmissionRequest ,
5+ } from "../interfaces/submission.interface" ;
36import { ICompileRequest } from "../interfaces/compiler.interface" ;
47import { rabbitMQService } from "../services/rabbitmq.service" ;
58import { RequestWithUser } from "../interfaces/auth.interface" ;
69import { redisClient } from "../services/redis.service" ;
10+ import { analyzeCode } from "../utils/analyze.util" ;
711
812export const compilerController = {
913 addSubmissionToRabbitMQ : async ( req : Request , res : Response ) => {
@@ -13,11 +17,24 @@ export const compilerController = {
1317 message : "Missing Required Fields" ,
1418 } ) ;
1519 }
20+
1621 submission . token = ( req as RequestWithUser ) . user . token ;
17- submission . username = ( req as RequestWithUser ) . user . username
22+ submission . username = ( req as RequestWithUser ) . user . username ;
23+ const resultAnalyzeCode = await analyzeCode ( submission ) ;
24+ if (
25+ resultAnalyzeCode . imports . length > 0 ||
26+ resultAnalyzeCode . functions . length > 0
27+ ) {
28+ return res . status ( 406 ) . json ( {
29+ message : "Has Constraint In Your Code" ,
30+ data : resultAnalyzeCode ,
31+ } ) ;
32+ }
1833 await rabbitMQService . sendDataToQueue ( "submission" , submission ) ;
1934
20- redisClient . set ( `submissionState-${ submission . username } ` , "true" , { EX : 240 } )
35+ redisClient . set ( `submissionState-${ submission . username } ` , "true" , {
36+ EX : 240 ,
37+ } ) ;
2138
2239 return res . status ( 200 ) . json ( {
2340 message : "Add To Queue Successfully" ,
@@ -37,11 +54,11 @@ export const compilerController = {
3754 } ) ;
3855 } ,
3956 compilerCodeLearnify : async ( req : Request , res : Response ) => {
40- const data : ISubmissionLearnify = req . body
57+ const data : ISubmissionLearnify = req . body ;
4158 // check valid user in learnify database
42- await rabbitMQService . sendDataToQueue ( "learnify-submission" , data )
59+ await rabbitMQService . sendDataToQueue ( "learnify-submission" , data ) ;
4360 return res . status ( 200 ) . json ( {
4461 message : "Add To Queue Successfully" ,
45- } )
46- }
62+ } ) ;
63+ } ,
4764} ;
0 commit comments