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"
}