ProjectVersionsService
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
Returns
ProjectVersionsService
Methods
createVersion()
createVersion(
projectId,dto):Promise<ProjectVersionEntity>
Defined in: apps/api/src/modules/project-versions/project-versions.service.ts:158
Создаёт новую версию для проекта.
Логика:
- Проверка существования проекта.
- Определение следующего
versionNumberдля проекта. - Создание записи
ProjectVersionс сырымAppSchema. - Обновление
project.currentVersionIdна новую версию.
Важно:
- здесь умышленно не выполняется валидация DSL-схемы;
- пользователю разрешено сохранять промежуточные/ломающие состояния;
- валидация происходит отдельно через
/dsl/validate.
Parameters
projectId
string
UUID проекта
dto
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 если версия не найдена или не принадлежит проекту