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(projectId, dto): Promise<ProjectVersionEntity>

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

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

Логика:

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

Важно:

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

Parameters

projectId

string

UUID проекта

dto

CreateProjectVersionDto

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

Returns

Promise<ProjectVersionEntity>

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


getVersionById()

getVersionById(projectId, versionId): Promise<ProjectVersionEntity>

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

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

Parameters

projectId

string

UUID проекта

versionId

string

UUID версии

Returns

Promise<ProjectVersionEntity>

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

Throws

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


getVersionByNumber()

getVersionByNumber(projectId, versionNumber): Promise<ProjectVersionEntity>

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

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

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

Parameters

projectId

string

UUID проекта

versionNumber

number

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

Returns

Promise<ProjectVersionEntity>

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

Throws

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


listVersions()

listVersions(projectId): Promise<ProjectVersionEntity[]>

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

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

Parameters

projectId

string

UUID проекта

Returns

Promise<ProjectVersionEntity[]>

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


rollbackToVersion()

rollbackToVersion(projectId, versionId): Promise<ProjectVersionEntity>

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

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

Логика:

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

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

Parameters

projectId

string

UUID проекта

versionId

string

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

Returns

Promise<ProjectVersionEntity>

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

Throws

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