feat(api): export data as zip

This commit is contained in:
Isaac
2025-02-01 01:17:00 +00:00
parent 4278d24e0b
commit f029a49877
4 changed files with 484 additions and 6 deletions

36
src/lib/workers/export.js Normal file
View File

@@ -0,0 +1,36 @@
const { expose } = require('threads/worker');
const Cryptr = require('cryptr');
const { decrypt } = new Cryptr(process.env.ENCRYPTION_KEY);
function decryptIfExists(encrypted) {
if (encrypted) return decrypt(encrypted);
return null;
}
expose({
exportTicket(ticket) {
if (ticket.closedReason) ticket.closedReason = decrypt(ticket.closedReason);
if (ticket.feedback?.comment) ticket.feedback.comment = decrypt(ticket.feedback.comment);
if (ticket.topic) ticket.topic = decrypt(ticket.topic);
ticket.archivedMessages = ticket.archivedMessages.map(async message => {
message.content = decryptIfExists(message.content);
return message;
});
ticket.archivedUsers = ticket.archivedUsers.map(async user => {
user.displayName = decryptIfExists(user.displayName);
user.username = decryptIfExists(user.username);
return user;
});
ticket.questionAnswers = ticket.questionAnswers.map(async answer => {
if (answer.value) answer.value = decryptIfExists(answer.value);
return answer;
});
delete ticket.guildId;
return JSON.stringify(ticket);
},
});