MCPcopy Create free account
hub / github.com/Linen-dev/linen.dev / processAttachments

Function processAttachments

apps/web/services/slack/sync/attachments.ts:10–58  ·  view source on GitHub ↗
(
  m: ConversationHistoryMessage,
  message: messages,
  token: string,
  logger: Logger
)

Source from the content-addressed store, hash-verified

8import { slugify } from '@linen/utilities/string';
9
10export async function processAttachments(
11 m: ConversationHistoryMessage,
12 message: messages,
13 token: string,
14 logger: Logger
15) {
16 const promises = [];
17
18 let files: Record<string, string>;
19 if (m.files) {
20 files = await processLinks(m.files, token, message.channelId, logger);
21 }
22
23 if (m.files && m.files.length) {
24 promises.push(
25 ...m.files
26 .filter((file) => !!file.name)
27 .map((file) => {
28 const serializedFile = {
29 messagesId: message.id,
30 externalId: file.id,
31 name: file.name,
32 sourceUrl: file.url_private,
33 internalUrl: files[file.id],
34 mimetype: file.mimetype,
35 permalink: file.permalink,
36 title: file.title,
37 };
38 return prisma.messageAttachments
39 .upsert({
40 where: {
41 messagesId_externalId: {
42 externalId: file.id,
43 messagesId: message.id,
44 },
45 },
46 create: serializedFile,
47 update: serializedFile,
48 })
49 .catch((error) => {
50 logger.error({ 'attachment failure': error });
51 });
52 })
53 );
54 }
55 return await Promise.all(promises).catch((error) => {
56 logger.error(error);
57 });
58}
59
60/**
61 * this function will upload files to s3 and return the fileId and internalUrl (cdn or s3 url)

Callers 4

saveMessagesSynchronousFunction · 0.90
saveMessagesTransactionFunction · 0.90
addMessageFunction · 0.90
changeMessageFunction · 0.90

Calls 3

processLinksFunction · 0.85
mapMethod · 0.80
errorMethod · 0.65

Tested by

no test coverage detected