AttachmentsController
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
Returns
AttachmentsController
Methods
createFromUrl()
createFromUrl(
user,dto):Promise<Attachment>
Defined in: apps/api/src/modules/attachments/attachments.controller.ts:121
Импортировать файл по URL и сохранить в storage.
Parameters
user
Текущий пользователь (из JWT)
dto
Данные для импорта
Returns
Promise<Attachment>
Созданное или найденное вложение
Route
POST /attachments/import-url
Пример тела запроса:
{
"projectId": "uuid-of-project",
"sourceUrl": "https://example.com/image.png",
"name": "Preview image"
}
createLink()
createLink(
user,dto):Promise<Attachment>
Defined in: apps/api/src/modules/attachments/attachments.controller.ts:95
Создать вложение типа "link".
Parameters
user
Текущий пользователь (из JWT)
dto
Данные для создания
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
Текущий пользователь (из JWT)
dto
Данные для создания
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
Текущий пользователь (из 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
Текущий пользователь (из 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
Текущий пользователь (из 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
Текущий пользователь (из 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
Текущий пользователь (из JWT)
dto
Данные для запроса
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
Текущий пользователь (из JWT)
id
string
ID вложения
dto
Данные для обновления
Returns
Promise<Attachment>
Обновленное вложение
Route
PATCH /attachments/:id
Позволяет обновить только имя вложения.
Пример тела запроса:
{
"name": "New filename"
}