feat(task): submission dengan multiple files sebanyak 20 files
This commit is contained in:
@@ -44,6 +44,12 @@ class TaskRepository {
|
||||
url_link: true,
|
||||
submitted_at: true,
|
||||
updated_at: true,
|
||||
files: {
|
||||
select: this.submissionFileSelect(),
|
||||
orderBy: {
|
||||
id: 'asc'
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -91,6 +97,12 @@ class TaskRepository {
|
||||
professional_bio: true,
|
||||
},
|
||||
},
|
||||
files: {
|
||||
select: this.submissionFileSelect(),
|
||||
orderBy: {
|
||||
id: 'asc'
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -140,6 +152,14 @@ class TaskRepository {
|
||||
id_user: parseInt(idUser),
|
||||
},
|
||||
},
|
||||
include: {
|
||||
files: {
|
||||
select: this.submissionFileSelect(),
|
||||
orderBy: {
|
||||
id: 'asc',
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -172,22 +192,85 @@ class TaskRepository {
|
||||
email: true,
|
||||
},
|
||||
},
|
||||
files: {
|
||||
select: this.submissionFileSelect(),
|
||||
orderBy: {
|
||||
id: 'asc',
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
async createSubmission(submissionData) {
|
||||
async createSubmission(submissionData, filesData = []) {
|
||||
return prisma.taskSubmission.create({
|
||||
data: submissionData,
|
||||
data: {
|
||||
...submissionData,
|
||||
files: filesData.length > 0
|
||||
? {
|
||||
create: filesData,
|
||||
}
|
||||
: undefined,
|
||||
},
|
||||
include: {
|
||||
files: {
|
||||
select: this.submissionFileSelect(),
|
||||
orderBy: {
|
||||
id: 'asc',
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
async updateSubmission(idSubmission, submissionData) {
|
||||
return prisma.taskSubmission.update({
|
||||
where: {
|
||||
id: parseInt(idSubmission),
|
||||
},
|
||||
data: submissionData,
|
||||
async updateSubmission(idSubmission, submissionData, filesData = null) {
|
||||
return prisma.$transaction(async (tx) => {
|
||||
const submissionId = parseInt(idSubmission);
|
||||
|
||||
await tx.taskSubmission.update({
|
||||
where: {
|
||||
id: submissionId,
|
||||
},
|
||||
data: submissionData,
|
||||
});
|
||||
|
||||
if (filesData !== null) {
|
||||
await tx.taskSubmissionFile.deleteMany({
|
||||
where: {
|
||||
id_submission: submissionId,
|
||||
},
|
||||
});
|
||||
|
||||
if (filesData.length > 0) {
|
||||
await tx.taskSubmissionFile.createMany({
|
||||
data: filesData.map((file) => ({
|
||||
...file,
|
||||
id_submission: submissionId,
|
||||
})),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return tx.taskSubmission.findUnique({
|
||||
where: {
|
||||
id: submissionId,
|
||||
},
|
||||
include: {
|
||||
files: {
|
||||
select: {
|
||||
id: true,
|
||||
file_path: true,
|
||||
original_name: true,
|
||||
mime_type: true,
|
||||
size_bytes: true,
|
||||
created_at: true,
|
||||
},
|
||||
orderBy: {
|
||||
id: 'asc',
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -266,6 +349,12 @@ class TaskRepository {
|
||||
professional_bio: true,
|
||||
},
|
||||
},
|
||||
files: {
|
||||
select: this.submissionFileSelect(),
|
||||
orderBy: {
|
||||
id: 'asc'
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -293,6 +382,17 @@ class TaskRepository {
|
||||
|
||||
return Boolean(task);
|
||||
}
|
||||
|
||||
submissionFileSelect() {
|
||||
return {
|
||||
id: true,
|
||||
file_path: true,
|
||||
original_name: true,
|
||||
mime_type: true,
|
||||
size_bytes: true,
|
||||
created_at: true,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = new TaskRepository();
|
||||
|
||||
Reference in New Issue
Block a user