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

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