logistics -> exporter, remove cutesy naming of lib
This commit is contained in:
60
server/exporter.js
Normal file
60
server/exporter.js
Normal file
@@ -0,0 +1,60 @@
|
||||
// @flow
|
||||
import debug from "debug";
|
||||
import mailer from "./mailer";
|
||||
import { Collection, Team } from "./models";
|
||||
import { createQueue } from "./utils/queue";
|
||||
|
||||
const log = debug("exporter");
|
||||
const exporterQueue = createQueue("exporter");
|
||||
const queueOptions = {
|
||||
attempts: 2,
|
||||
removeOnComplete: true,
|
||||
backoff: {
|
||||
type: "exponential",
|
||||
delay: 60 * 1000,
|
||||
},
|
||||
};
|
||||
|
||||
async function exportAndEmailCollections(teamId: string, email: string) {
|
||||
log("Archiving team", teamId);
|
||||
const { archiveCollections } = require("./utils/zip");
|
||||
const team = await Team.findByPk(teamId);
|
||||
const collections = await Collection.findAll({
|
||||
where: { teamId },
|
||||
order: [["name", "ASC"]],
|
||||
});
|
||||
const filePath = await archiveCollections(collections);
|
||||
|
||||
log("Archive path", filePath);
|
||||
|
||||
mailer.export({
|
||||
to: email,
|
||||
attachments: [
|
||||
{
|
||||
filename: `${team.name} Export.zip`,
|
||||
path: filePath,
|
||||
},
|
||||
],
|
||||
});
|
||||
}
|
||||
|
||||
exporterQueue.process(async (job) => {
|
||||
log("Process", job.data);
|
||||
|
||||
switch (job.data.type) {
|
||||
case "export-collections":
|
||||
return await exportAndEmailCollections(job.data.teamId, job.data.email);
|
||||
default:
|
||||
}
|
||||
});
|
||||
|
||||
export const exportCollections = (teamId: string, email: string) => {
|
||||
exporterQueue.add(
|
||||
{
|
||||
type: "export-collections",
|
||||
teamId,
|
||||
email,
|
||||
},
|
||||
queueOptions
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user