Skip to content

Commit cfdec79

Browse files
authored
Merge pull request #358 from qa-guru/QAGDEV-681
QAGDEV-681 - Подключение проекта к S3
2 parents 5b3d760 + 2d55eca commit cfdec79

34 files changed

+698
-269
lines changed

.env.development

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,7 @@ VITE_AVATAR_UPLOAD_URI=/upload/avatar
66
VITE_AVATAR_DELETE_URI=/upload/avatar
77
VITE_TRAINING_UPLOAD_URI=/upload/training/:id
88
VITE_TRAINING_DELETE_URI=/upload/training/:id
9+
VITE_HOMEWORK_FILE_UPLOAD_URI=/homework/:homeWorkId/file
10+
VITE_HOMEWORK_FILE_GET_URI=/homework/:homeWorkId/file/:fileId
11+
VITE_HOMEWORK_FILE_DELETE_URI=/homework/:homeWorkId/file
912
VITE_APP_ENDPOINT="http://app-stage.qa.guru:8080"

.env.production

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,7 @@ VITE_REFRESH_TOKEN=/api/refreshtoken
55
VITE_AVATAR_UPLOAD_URI=/api/upload/avatar
66
VITE_AVATAR_DELETE_URI=/api/upload/avatar
77
VITE_TRAINING_UPLOAD_URI=/api/upload/training/:id
8-
VITE_TRAINING_DELETE_URI=/api/upload/training/:id
8+
VITE_TRAINING_DELETE_URI=/api/upload/training/:id
9+
VITE_HOMEWORK_FILE_UPLOAD_URI=/api/homework/:homeWorkId/file
10+
VITE_HOMEWORK_FILE_GET_URI=/api/homework/:homeWorkId/file/:fileId
11+
VITE_HOMEWORK_FILE_DELETE_URI=/api/homework/:homeWorkId/file
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
mutation createHomeWorkToCheck(
2+
$lectureId: ID!
3+
$content: String!
4+
$trainingId: ID!
5+
) {
6+
createHomeWorkToCheck(
7+
lectureId: $lectureId
8+
content: $content
9+
trainingId: $trainingId
10+
) {
11+
id
12+
lecture {
13+
id
14+
subject
15+
contentHomeWork
16+
}
17+
answer
18+
status
19+
training {
20+
techStack
21+
}
22+
student {
23+
id
24+
firstName
25+
avatar
26+
lastName
27+
rating {
28+
rating
29+
}
30+
}
31+
mentor {
32+
id
33+
firstName
34+
avatar
35+
lastName
36+
rating {
37+
rating
38+
}
39+
}
40+
filesHomeWork {
41+
id
42+
creationDate
43+
fileName
44+
contentType
45+
size
46+
}
47+
creationDate
48+
startCheckingDate
49+
endCheckingDate
50+
}
51+
}

src/api/graphql/homework/homework-by-lecture-and-training.graphql

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,13 @@ query homeWorkByLectureAndTraining($lectureId: ID!, $trainingId: ID!) {
44
lecture {
55
id
66
subject
7+
contentHomeWork
78
}
89
answer
910
status
11+
training {
12+
techStack
13+
}
1014
student {
1115
id
1216
firstName
@@ -16,6 +20,22 @@ query homeWorkByLectureAndTraining($lectureId: ID!, $trainingId: ID!) {
1620
rating
1721
}
1822
}
23+
mentor {
24+
id
25+
firstName
26+
avatar
27+
lastName
28+
rating {
29+
rating
30+
}
31+
}
32+
filesHomeWork {
33+
id
34+
creationDate
35+
fileName
36+
contentType
37+
size
38+
}
1939
creationDate
2040
startCheckingDate
2141
endCheckingDate

src/api/graphql/homework/send-homework-to-check.graphql

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,5 @@
1-
mutation sendHomeWorkToCheck(
2-
$lectureId: ID!
3-
$content: String!
4-
$trainingId: ID!
5-
) {
6-
sendHomeWorkToCheck(
7-
lectureId: $lectureId
8-
content: $content
9-
trainingId: $trainingId
10-
) {
1+
mutation sendHomeWorkToCheck($homeWorkId: ID!) {
2+
sendHomeWorkToCheck(homeWorkId: $homeWorkId) {
113
id
124
lecture {
135
id
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import axios, { type AxiosResponse } from "axios";
2+
import {
3+
HOMEWORK_FILE_DELETE_URI,
4+
HOMEWORK_FILE_GET_URI,
5+
HOMEWORK_FILE_UPLOAD_URI,
6+
} from "config";
7+
8+
export interface HomeworkFileResponse {
9+
id: string;
10+
fileName: string;
11+
contentType: string;
12+
size: number;
13+
creationDate: string;
14+
}
15+
16+
export default class HomeworkFileService {
17+
static uploadFile(
18+
homeWorkId: string,
19+
file: File
20+
): Promise<AxiosResponse<HomeworkFileResponse>> {
21+
const formData = new FormData();
22+
formData.append("file", file);
23+
24+
const uploadFileUrl = HOMEWORK_FILE_UPLOAD_URI.replace(
25+
// eslint-disable-next-line sonarjs/no-duplicate-string
26+
":homeWorkId",
27+
homeWorkId
28+
);
29+
30+
return axios({
31+
method: "POST",
32+
url: uploadFileUrl,
33+
headers: { "Content-Type": "multipart/form-data" },
34+
data: formData,
35+
});
36+
}
37+
38+
static getFile(
39+
homeWorkId: string,
40+
fileId: string
41+
): Promise<AxiosResponse<Blob>> {
42+
const getFileUrl = HOMEWORK_FILE_GET_URI.replace(
43+
":homeWorkId",
44+
homeWorkId
45+
).replace(":fileId", fileId);
46+
47+
return axios({
48+
method: "GET",
49+
url: getFileUrl,
50+
responseType: "blob",
51+
});
52+
}
53+
54+
static deleteFile(homeWorkId: string): Promise<AxiosResponse<void>> {
55+
const deleteUrl = HOMEWORK_FILE_DELETE_URI.replace(
56+
":homeWorkId",
57+
homeWorkId
58+
);
59+
60+
return axios({
61+
method: "DELETE",
62+
url: deleteUrl,
63+
});
64+
}
65+
}

src/config.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,8 @@ export const AVATAR_DELETE_URI = import.meta.env.VITE_AVATAR_DELETE_URI;
66
export const TRAINING_UPLOAD_URI = import.meta.env.VITE_TRAINING_UPLOAD_URI;
77
export const TRAINING_DELETE_URI = import.meta.env.VITE_TRAINING_DELETE_URI;
88
export const REFRESH_TOKEN_URI = import.meta.env.VITE_REFRESH_TOKEN;
9+
export const HOMEWORK_FILE_UPLOAD_URI = import.meta.env
10+
.VITE_HOMEWORK_FILE_UPLOAD_URI;
11+
export const HOMEWORK_FILE_GET_URI = import.meta.env.VITE_HOMEWORK_FILE_GET_URI;
12+
export const HOMEWORK_FILE_DELETE_URI = import.meta.env
13+
.VITE_HOMEWORK_FILE_DELETE_URI;

src/shared/components/text-editor/comment-editor/comment-editor.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { LinkBubbleMenu, RichTextEditor } from "shared/lib/mui-tiptap";
77
import { TableBubbleMenu, MenuButton } from "shared/lib/mui-tiptap/controls";
88

99
import { EditorMenuControls } from "./ui";
10-
import { fileListToImageFiles } from "../utils/fileListToImageFiles";
10+
import { fileListToImageFiles } from "../utils/file-list-to-image-files";
1111
import useExtensions from "../hooks/use-extensions";
1212
import { ITextEditor } from "../types";
1313

0 commit comments

Comments
 (0)