Skip to content

Commit 592e8d6

Browse files
committed
feat: save scores to database
1 parent 6b50738 commit 592e8d6

File tree

4 files changed

+48
-14
lines changed

4 files changed

+48
-14
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import {MigrationInterface, QueryRunner} from "typeorm";
2+
3+
export class AddQualityAndLintScores1626038854102 implements MigrationInterface {
4+
name = 'AddQualityAndLintScores1626038854102'
5+
6+
public async up(queryRunner: QueryRunner): Promise<void> {
7+
await queryRunner.query(`ALTER TABLE "submissions" ADD "lintScore" integer`);
8+
await queryRunner.query(`ALTER TABLE "submissions" ADD "qualityScore" integer`);
9+
}
10+
11+
public async down(queryRunner: QueryRunner): Promise<void> {
12+
await queryRunner.query(`ALTER TABLE "submissions" DROP COLUMN "qualityScore"`);
13+
await queryRunner.query(`ALTER TABLE "submissions" DROP COLUMN "lintScore"`);
14+
}
15+
16+
}

src/submissions/submission.entity.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,14 @@ export class Submission extends BaseEntity {
7676
@UpdateDateColumn()
7777
updatedAt: Date;
7878

79+
@jsonMember
80+
@Column({ nullable: true })
81+
lintScore: number;
82+
83+
@jsonMember
84+
@Column({ nullable: true })
85+
qualityScore: number;
86+
7987
@ManyToOne(() => User, (user) => user.submissions, {
8088
nullable: false,
8189
eager: true,

src/submissions/submissions.controller.ts

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,10 @@ export class SubmissionsController {
3333
@Request() req: ValidatedJWTReq,
3434
@Body() createSubmissionDTO: CreateSubmissionDTO,
3535
): Promise<SubmissionResultDTO> {
36-
const submission = await this.submissionsService.create({
37-
...createSubmissionDTO,
38-
user: req.user,
39-
});
40-
41-
// Send job to worker
42-
await this.amqpConnection.publish('jobs_ex', 'jobs_rk', {
43-
id: submission.id,
44-
code: createSubmissionDTO.code,
45-
language: createSubmissionDTO.language,
46-
});
47-
4836
let lintScore = { score: 100 };
4937
let qualityScore = { score: 100 };
5038
switch (createSubmissionDTO.language) {
51-
case 'cpython3':
39+
case 'python':
5240
qualityScore = this.qualityService.run(createSubmissionDTO.code, 'py');
5341
// lintScore = this.lintService.lintPython3(createSubmissionDTO.code);
5442
break;
@@ -63,6 +51,22 @@ export class SubmissionsController {
6351
qualityScore = { score: 0 };
6452
}
6553

54+
const submission = await this.submissionsService.create(
55+
{
56+
...createSubmissionDTO,
57+
user: req.user,
58+
},
59+
lintScore.score,
60+
qualityScore.score,
61+
);
62+
63+
// Send job to worker
64+
await this.amqpConnection.publish('jobs_ex', 'jobs_rk', {
65+
id: submission.id,
66+
code: createSubmissionDTO.code,
67+
language: createSubmissionDTO.language,
68+
});
69+
6670
return {
6771
submission,
6872
lint: lintScore,

src/submissions/submissions.service.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,15 @@ export class SubmissionsService {
2626
private benchmarkService: BenchmarkService,
2727
) {}
2828

29-
async create(insertSubmissionDTO: InsertSubmissionDTO): Promise<Submission> {
29+
async create(
30+
insertSubmissionDTO: InsertSubmissionDTO,
31+
lintScore: number,
32+
qualityScore: number,
33+
): Promise<Submission> {
3034
const submission = new Submission(insertSubmissionDTO);
3135
submission.status = 'waiting';
36+
submission.lintScore = lintScore;
37+
submission.qualityScore = qualityScore;
3238

3339
const benchmark = await this.benchmarkService.findOne(
3440
insertSubmissionDTO.benchmarkId,

0 commit comments

Comments
 (0)