Skip to main content

AttachmentsService

@lowcode/api


Class: AttachmentsService

Defined in: apps/api/src/modules/attachments/attachments.service.ts:28

Сервис для работы с вложениями (attachments).

Отвечает за:

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

Все операции проверяют принадлежность вложения к clientId текущего пользователя для обеспечения изоляции данных.

Constructors​

Constructor​

new AttachmentsService(prisma, storage, config): AttachmentsService

Defined in: apps/api/src/modules/attachments/attachments.service.ts:31

Parameters​

prisma​

PrismaService

storage​

StorageService

config​

ConfigService

Returns​

AttachmentsService

Methods​

createLink(clientId, dto): Promise<Attachment>

Defined in: apps/api/src/modules/attachments/attachments.service.ts:261

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

Parameters​

clientId​

string

ID клиента (из JWT)

dto​

CreateLinkAttachmentDto

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

Returns​

Promise<Attachment>

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

Route​

POST /attachments/link


createS3()​

createS3(clientId, dto): Promise<Attachment>

Defined in: apps/api/src/modules/attachments/attachments.service.ts:293

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

Parameters​

clientId​

string

ID клиента (из JWT)

dto​

CreateS3AttachmentDto

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

Returns​

Promise<Attachment>

Созданное вложение с presigned URL для скачивания

Route​

POST /attachments/s3

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


findByProject()​

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

Defined in: apps/api/src/modules/attachments/attachments.service.ts:224

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

Parameters​

clientId​

string

ID клиента (из JWT)

projectId​

string

ID проекта

Returns​

Promise<Attachment[]>

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

Route​

GET /attachments?projectId=X


findOne()​

findOne(clientId, id): Promise<Attachment>

Defined in: apps/api/src/modules/attachments/attachments.service.ts:246

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

Parameters​

clientId​

string

ID клиента (из JWT)

id​

string

ID вложения

Returns​

Promise<Attachment>

Вложение

Route​

GET /attachments/:id


generateUploadUrl()​

generateUploadUrl(clientId, projectId, filename, contentType): Promise<{ storageKey: string; uploadUrl: string; }>

Defined in: apps/api/src/modules/attachments/attachments.service.ts:438

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

Parameters​

clientId​

string

ID клиента (из JWT)

projectId​

string

ID проекта

filename​

string

Имя файла

contentType​

string

MIME-тип файла

Returns​

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

Presigned URL для загрузки и сгенерированный ключ хранилища

Route​

POST /attachments/upload-url

Генерирует временный URL для прямой загрузки файла клиентом в S3.


importFromUrl()​

importFromUrl(clientId, dto): Promise<Attachment>

Defined in: apps/api/src/modules/attachments/attachments.service.ts:324

Импортировать вложение по URL без сохранения в storage.

Parameters​

clientId​

string

ID клиента (из JWT)

dto​

ImportUrlAttachmentDto

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

Returns​

Promise<Attachment>

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

Route​

POST /attachments/import-url


refreshDownloadUrl()​

refreshDownloadUrl(clientId, id): Promise<Attachment>

Defined in: apps/api/src/modules/attachments/attachments.service.ts:463

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

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

Parameters​

clientId​

string

ID клиента (из JWT)

id​

string

ID вложения

Returns​

Promise<Attachment>

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


remove()​

remove(clientId, id): Promise<void>

Defined in: apps/api/src/modules/attachments/attachments.service.ts:390

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

Parameters​

clientId​

string

ID клиента (из JWT)

id​

string

ID вложения

Returns​

Promise<void>

Route​

DELETE /attachments/:id

Удаляет запись из БД и файл из S3 (если kind === 's3').


update()​

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

Defined in: apps/api/src/modules/attachments/attachments.service.ts:367

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

Parameters​

clientId​

string

ID клиента (из JWT)

id​

string

ID вложения

dto​

UpdateAttachmentDto

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

Returns​

Promise<Attachment>

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

Route​

PATCH /attachments/:id

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