Fixing a Paperless bug
This commit is contained in:
parent
19674310e7
commit
af15eb1d0b
@ -10,10 +10,8 @@ export default createOperation.query({
|
|||||||
headers: {
|
headers: {
|
||||||
Authorization: process.env.PAPERLESS_TOKEN,
|
Authorization: process.env.PAPERLESS_TOKEN,
|
||||||
},
|
},
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
// Add download link, thumbnail link, preview link, PDF data, and metadata to each document
|
// Add download link, thumbnail link, preview link, PDF data, and metadata to each document
|
||||||
const documentsWithLinksDataAndMetadata = await Promise.all(data.results.map(async doc => {
|
const documentsWithLinksDataAndMetadata = await Promise.all(data.results.map(async doc => {
|
||||||
const response = await axios.get(`https://paperless.andert.me/api/documents/${doc.id}/preview/`, {
|
const response = await axios.get(`https://paperless.andert.me/api/documents/${doc.id}/preview/`, {
|
||||||
@ -25,26 +23,35 @@ export default createOperation.query({
|
|||||||
|
|
||||||
const pdfData = Buffer.from(response.data, 'binary').toString('base64');
|
const pdfData = Buffer.from(response.data, 'binary').toString('base64');
|
||||||
|
|
||||||
const correspondentResponse = await axios.get(`https://paperless.andert.me/api/correspondents/${doc.correspondent}/`, {
|
let correspondent = null;
|
||||||
headers: {
|
if (doc.correspondent) {
|
||||||
Authorization: process.env.PAPERLESS_TOKEN,
|
const correspondentResponse = await axios.get(`https://paperless.andert.me/api/correspondents/${doc.correspondent}/`, {
|
||||||
},
|
headers: {
|
||||||
});
|
Authorization: process.env.PAPERLESS_TOKEN,
|
||||||
const correspondent = correspondentResponse.data;
|
},
|
||||||
|
});
|
||||||
|
correspondent = correspondentResponse.data;
|
||||||
|
}
|
||||||
|
|
||||||
const tagsResponse = await Promise.all(doc.tags.map(tag => axios.get(`https://paperless.andert.me/api/tags/${tag}/`, {
|
let tags = [];
|
||||||
headers: {
|
if (doc.tags) {
|
||||||
Authorization: process.env.PAPERLESS_TOKEN,
|
const tagsResponse = await Promise.all(doc.tags.map(tag => axios.get(`https://paperless.andert.me/api/tags/${tag}/`, {
|
||||||
},
|
headers: {
|
||||||
})));
|
Authorization: process.env.PAPERLESS_TOKEN,
|
||||||
const tags = tagsResponse.map(response => response.data);
|
},
|
||||||
|
})));
|
||||||
|
tags = tagsResponse.map(response => response.data);
|
||||||
|
}
|
||||||
|
|
||||||
const documentTypeResponse = await axios.get(`https://paperless.andert.me/api/document_types/${doc.document_type}/`, {
|
let documentType = null;
|
||||||
headers: {
|
if (doc.document_type) {
|
||||||
Authorization: process.env.PAPERLESS_TOKEN,
|
const documentTypeResponse = await axios.get(`https://paperless.andert.me/api/document_types/${doc.document_type}/`, {
|
||||||
},
|
headers: {
|
||||||
});
|
Authorization: process.env.PAPERLESS_TOKEN,
|
||||||
const documentType = documentTypeResponse.data;
|
},
|
||||||
|
});
|
||||||
|
documentType = documentTypeResponse.data;
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...doc,
|
...doc,
|
||||||
@ -54,7 +61,7 @@ export default createOperation.query({
|
|||||||
pdfData,
|
pdfData,
|
||||||
correspondent,
|
correspondent,
|
||||||
tags,
|
tags,
|
||||||
document_type: documentType,
|
documentType,
|
||||||
};
|
};
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
57
.wundergraph/operations/paper.ts
Normal file
57
.wundergraph/operations/paper.ts
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
// .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;
|
||||||
|
},
|
||||||
|
});
|
13723
pnpm-lock.yaml
generated
13723
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@ -1,8 +1,9 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import HeaderMain from "$lib/layouts/HeaderMain.svelte";
|
import HeaderMain from "$lib/layouts/HeaderMain.svelte";
|
||||||
import { createQuery } from "../../lib/wundergraph";
|
|
||||||
import { Avatar } from "@skeletonlabs/skeleton";
|
import { Avatar } from "@skeletonlabs/skeleton";
|
||||||
|
|
||||||
|
import { createQuery } from "../../lib/wundergraph";
|
||||||
|
|
||||||
const meQuery = createQuery({
|
const meQuery = createQuery({
|
||||||
operationName: "Me",
|
operationName: "Me",
|
||||||
});
|
});
|
||||||
|
15
src/routes/me/paper/+page.svelte
Normal file
15
src/routes/me/paper/+page.svelte
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import { createQuery } from "../../../lib/wundergraph";
|
||||||
|
|
||||||
|
const paperQuery = createQuery({
|
||||||
|
operationName: "paper",
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{#if $paperQuery.isLoading}
|
||||||
|
<p>Loading...</p>
|
||||||
|
{:else if $paperQuery.error}
|
||||||
|
<pre>Error: {JSON.stringify($paperQuery.error, null, 2)}</pre>
|
||||||
|
{:else}
|
||||||
|
{JSON.stringify($paperQuery.data)}
|
||||||
|
{/if}
|
@ -27,10 +27,6 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<HeaderMain>
|
<HeaderMain>
|
||||||
<!-- <div slot="header">
|
|
||||||
<h1>Paperless Documents</h1>
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
<div slot="main" class="h-full w-full overflow-scroll flex">
|
<div slot="main" class="h-full w-full overflow-scroll flex">
|
||||||
<div class="w-1/4 h-full overflow-scroll">
|
<div class="w-1/4 h-full overflow-scroll">
|
||||||
{#if $paperlessQuery.isLoading}
|
{#if $paperlessQuery.isLoading}
|
||||||
@ -46,9 +42,12 @@
|
|||||||
<h2 class="text-lg font-semibold">
|
<h2 class="text-lg font-semibold">
|
||||||
{document.archived_file_name}
|
{document.archived_file_name}
|
||||||
</h2>
|
</h2>
|
||||||
<p>Correspondent: {document.correspondent.name}</p>
|
<p>Correspondent: {document.correspondent?.name || "N/A"}</p>
|
||||||
<p>Tags: {document.tags.map((tag) => tag.name).join(", ")}</p>
|
<p>
|
||||||
<p>{document.document_type.name}</p>
|
Tags: {document.tags?.map((tag) => tag.name).join(", ") ||
|
||||||
|
"N/A"}
|
||||||
|
</p>
|
||||||
|
<p>{document.documentType?.name || "N/A"}</p>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
{/each}
|
{/each}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import { sveltekit } from '@sveltejs/kit/vite';
|
import { sveltekit } from '@sveltejs/kit/vite';
|
||||||
import { defineConfig } from 'vite';
|
import { defineConfig } from 'vite';
|
||||||
import { fetchSchemas } from './.wundergraph/schemas/fetch-schemas';
|
import { fetchSchemas } from './.wundergraph/schemas/fetch-schemas';
|
||||||
import { vitePreprocess } from '@sveltejs/kit/vite';
|
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
plugins: [
|
plugins: [
|
||||||
|
Loading…
x
Reference in New Issue
Block a user