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