Skip to main content

ProjectVersionsService

@lowcode/api


Class: ProjectVersionsService

Defined in: apps/api/src/modules/project-versions/project-versions.service.ts:21

Сервис управления записями версий проекта (ProjectVersion).

Отвечает за:

  • получение списка версий;
  • поиск версии по номеру / id;
  • создание новой версии;
  • откат проекта к существующей версии.

Сервис работает поверх PrismaService и возвращает публичные сущности ProjectVersionEntity, а не сырые Prisma-модели.

Constructors

Constructor

new ProjectVersionsService(prisma): ProjectVersionsService

Defined in: apps/api/src/modules/project-versions/project-versions.service.ts:22

Parameters

prisma

PrismaService

Returns

ProjectVersionsService

Methods

createVersion()

createVersion(clientId, projectId, dto): Promise<ProjectVersionEntity>

Defined in: apps/api/src/modules/project-versions/project-versions.service.ts:165

Создаёт новую версию для проекта.

Логика:

  1. Проверка существования проекта.
  2. Определение следующего versionNumber для проекта.
  3. Создание записи ProjectVersion с сырым AppSchema.
  4. Обновление project.currentVersionId на новую версию.

Важно:

  • здесь умышленно не выполняется валидация DSL-схемы;
  • пользователю разрешено сохранять промежуточные/ломающие состояния;
  • валидация происходит отдельно через /dsl/validate.

Parameters

clientId

string

projectId

string

UUID проекта

dto

CreateProjectVersionDto

DTO с DSL-схемой и необязательной меткой

Returns

Promise<ProjectVersionEntity>

Созданная версия проекта


deleteVersion()

deleteVersion(clientId, projectId, versionId): Promise<void>

Defined in: apps/api/src/modules/project-versions/project-versions.service.ts:262

Удаляет сохранённую версию проекта.

Если удаляется текущая версия (currentVersionId), то проект автоматически переключается на следующую доступную (с максимальным versionNumber). Если версий больше не осталось — ссылка сбрасывается в null.

Parameters

clientId

string

ID клиента (workspace)

projectId

string

UUID проекта

versionId

string

UUID версии

Returns

Promise<void>


getVersionById()

getVersionById(clientId, projectId, versionId): Promise<ProjectVersionEntity>

Defined in: apps/api/src/modules/project-versions/project-versions.service.ts:126

Возвращает конкретную версию по её id, одновременно проверяя, что она принадлежит указанному проекту.

Parameters

clientId

string

projectId

string

UUID проекта

versionId

string

UUID версии

Returns

Promise<ProjectVersionEntity>

Сущность версии проекта

Throws

NotFoundException если версия не найдена или не принадлежит проекту


getVersionByNumber()

getVersionByNumber(clientId, projectId, versionNumber): Promise<ProjectVersionEntity>

Defined in: apps/api/src/modules/project-versions/project-versions.service.ts:94

Возвращает конкретную версию по её числовому номеру.

Номер версии (versionNumber) — автоинкрементное поле, уникальное в рамках одного проекта.

Parameters

clientId

string

projectId

string

UUID проекта

versionNumber

number

номер версии внутри проекта

Returns

Promise<ProjectVersionEntity>

Сущность версии проекта

Throws

NotFoundException если версия не найдена


listVersions()

listVersions(clientId, projectId): Promise<ProjectVersionEntity[]>

Defined in: apps/api/src/modules/project-versions/project-versions.service.ts:72

Возвращает список всех версий проекта (от новых к старым).

Parameters

clientId

string

projectId

string

UUID проекта

Returns

Promise<ProjectVersionEntity[]>

Массив версий проекта в виде ProjectVersionEntity[]


rollbackToVersion()

rollbackToVersion(clientId, projectId, versionId): Promise<ProjectVersionEntity>

Defined in: apps/api/src/modules/project-versions/project-versions.service.ts:227

Откатывает проект к существующей версии.

Логика:

  • проверяет, что версия существует и принадлежит проекту;
  • обновляет currentVersionId проекта;
  • не создаёт новую версию — просто помечает текущую.

Если в будущем потребуется, чтобы откат создавал новую версию, этот метод можно расширить.

Parameters

clientId

string

projectId

string

UUID проекта

versionId

string

UUID версии, к которой нужно выполнить откат

Returns

Promise<ProjectVersionEntity>

Версия, к которой был выполнен откат

Throws

NotFoundException если версия не найдена или не принадлежит проекту