Skip to main content

AttachmentsController

@lowcode/api


Class: AttachmentsController

Defined in: apps/api/src/modules/attachments/attachments.controller.ts:41

Контроллер управления вложениями (attachments).

Базовый маршрут: /attachments

Предоставляет операции:

  • получить список вложений по проекту;
  • получить вложение по ID;
  • создать вложение типа "link";
  • создать вложение типа "s3";
  • обновить метаданные вложения;
  • удалить вложение.

Constructors​

Constructor​

new AttachmentsController(attachmentsService): AttachmentsController

Defined in: apps/api/src/modules/attachments/attachments.controller.ts:42

Parameters​

attachmentsService​

AttachmentsService

Returns​

AttachmentsController

Methods​

createFromUrl()​

createFromUrl(user, dto): Promise<Attachment>

Defined in: apps/api/src/modules/attachments/attachments.controller.ts:121

Импортировать файл по URL и сохранить в storage.

Parameters​

user​

RequestUser

Текущий пользователь (из JWT)

dto​

ImportUrlAttachmentDto

Данные для импорта

Returns​

Promise<Attachment>

Созданное или найденное вложение

Route​

POST /attachments/import-url

Пример тела запроса:

{
"projectId": "uuid-of-project",
"sourceUrl": "https://example.com/image.png",
"name": "Preview image"
}

createLink(user, dto): Promise<Attachment>

Defined in: apps/api/src/modules/attachments/attachments.controller.ts:95

Создать вложение типа "link".

Parameters​

user​

RequestUser

Текущий пользователь (из JWT)

dto​

CreateLinkAttachmentDto

Данные для создания

Returns​

Promise<Attachment>

Созданное вложение

Route​

POST /attachments/link

Пример тела запроса:

{
"projectId": "uuid-of-project",
"sourceUrl": "https://drive.google.com/file/d/ABC123/view",
"name": "Logo",
"mimeType": "image/png"
}

createS3()​

createS3(user, dto): Promise<Attachment>

Defined in: apps/api/src/modules/attachments/attachments.controller.ts:185

Создать вложение типа "s3".

Parameters​

user​

RequestUser

Текущий пользователь (из JWT)

dto​

CreateS3AttachmentDto

Данные для создания

Returns​

Promise<Attachment>

Созданное вложение

Route​

POST /attachments/s3

Вызывается после того, как файл был загружен в S3 через presigned URL.

Пример тела запроса:

{
"projectId": "uuid-of-project",
"storageKey": "project-uuid/123456-uuid-file.png",
"name": "Screenshot",
"mimeType": "image/png",
"size": 54321
}

findByProject()​

findByProject(user, projectId): Promise<Attachment[]>

Defined in: apps/api/src/modules/attachments/attachments.controller.ts:54

Получить список вложений по проекту.

Parameters​

user​

RequestUser

Текущий пользователь (из JWT)

projectId​

string

ID проекта

Returns​

Promise<Attachment[]>

Список вложений

Route​

GET /attachments?projectId=X


findOne()​

findOne(user, id): Promise<Attachment>

Defined in: apps/api/src/modules/attachments/attachments.controller.ts:71

Получить вложение по ID.

Parameters​

user​

RequestUser

Текущий пользователь (из JWT)

id​

string

ID вложения

Returns​

Promise<Attachment>

Вложение

Route​

GET /attachments/:id


refreshDownloadUrl()​

refreshDownloadUrl(user, id): Promise<Attachment>

Defined in: apps/api/src/modules/attachments/attachments.controller.ts:232

Обновить presigned URL для скачивания S3-вложения.

Parameters​

user​

RequestUser

Текущий пользователь (из JWT)

id​

string

ID вложения

Returns​

Promise<Attachment>

Обновлённое вложение с новым URL

Route​

POST /attachments/:id/refresh-url

Используется для обновления истёкших URL.


remove()​

remove(user, id): Promise<void>

Defined in: apps/api/src/modules/attachments/attachments.controller.ts:249

Удалить вложение.

Parameters​

user​

RequestUser

Текущий пользователь (из JWT)

id​

string

ID вложения

Returns​

Promise<void>

Route​

DELETE /attachments/:id


requestUploadUrl()​

requestUploadUrl(user, dto): Promise<{ storageKey: string; uploadUrl: string; }>

Defined in: apps/api/src/modules/attachments/attachments.controller.ts:150

Запросить presigned URL для загрузки файла в S3.

Parameters​

user​

RequestUser

Текущий пользователь (из JWT)

dto​

RequestUploadUrlDto

Данные для запроса

Returns​

Promise<{ storageKey: string; uploadUrl: string; }>

Presigned URL для загрузки и ключ хранилища

Route​

POST /attachments/upload-url

Генерирует временный URL для прямой загрузки файла клиентом в S3. После загрузки файла клиент должен вызвать POST /attachments/s3 для создания записи.

Пример тела запроса:

{
"projectId": "uuid-of-project",
"filename": "screenshot.png",
"contentType": "image/png"
}

update()​

update(user, id, dto): Promise<Attachment>

Defined in: apps/api/src/modules/attachments/attachments.controller.ts:212

Обновить метаданные вложения.

Parameters​

user​

RequestUser

Текущий пользователь (из JWT)

id​

string

ID вложения

dto​

UpdateAttachmentDto

Данные для обновления

Returns​

Promise<Attachment>

Обновленное вложение

Route​

PATCH /attachments/:id

Позволяет обновить только имя вложения.

Пример тела запроса:

{
"name": "New filename"
}