57 lines
2.0 KiB
TypeScript
57 lines
2.0 KiB
TypeScript
// .wundergraph/operations/paper.ts
|
|
import { createOperation, z } from '../generated/wundergraph.factory';
|
|
import axios from 'axios';
|
|
|
|
export default createOperation.query({
|
|
input: z.object({}),
|
|
handler: async () => {
|
|
console.log('Making request to Paperless API');
|
|
const { data } = await axios.get('https://paperless.andert.me/api/documents/', {
|
|
headers: {
|
|
Authorization: process.env.PAPERLESS_TOKEN,
|
|
},
|
|
});
|
|
|
|
// Fetch additional metadata for each document
|
|
const documents = await Promise.all(data.results.map(async doc => {
|
|
let correspondent = null;
|
|
if (doc.correspondent) {
|
|
const correspondentResponse = await axios.get(`https://paperless.andert.me/api/correspondents/${doc.correspondent}/`, {
|
|
headers: {
|
|
Authorization: process.env.PAPERLESS_TOKEN,
|
|
},
|
|
});
|
|
correspondent = correspondentResponse.data;
|
|
}
|
|
|
|
let tags = [];
|
|
if (doc.tags) {
|
|
const tagsResponse = await Promise.all(doc.tags.map(tag => axios.get(`https://paperless.andert.me/api/tags/${tag}/`, {
|
|
headers: {
|
|
Authorization: process.env.PAPERLESS_TOKEN,
|
|
},
|
|
})));
|
|
tags = tagsResponse.map(response => response.data);
|
|
}
|
|
|
|
let documentType = null;
|
|
if (doc.document_type) {
|
|
const documentTypeResponse = await axios.get(`https://paperless.andert.me/api/document_types/${doc.document_type}/`, {
|
|
headers: {
|
|
Authorization: process.env.PAPERLESS_TOKEN,
|
|
},
|
|
});
|
|
documentType = documentTypeResponse.data;
|
|
}
|
|
|
|
return {
|
|
...doc,
|
|
correspondent,
|
|
tags,
|
|
documentType,
|
|
};
|
|
}));
|
|
|
|
return documents;
|
|
},
|
|
}); |