Gitea Actions Demo / Deploy (push) Successful in 32s
Issue changes are recorded per field in the issue_change table, in the same transaction as the issue itself. The new history module exposes: - GET /api/issues/:issueId/history — change timeline grouped by save - GET /api/issues/stats/daily — created, status transitions and status snapshot per day, with time zone support The migration backfills history for existing issues. Setting a field to its current value no longer bumps updatedAt or emits issue.updated.
31 lines
1.6 KiB
TypeScript
31 lines
1.6 KiB
TypeScript
import { Module } from '@nestjs/common';
|
|
import { PrismaModule } from '../../common/prisma-adapter/prisma.module.js';
|
|
import { IssueModule } from '../issue/issue.module.js';
|
|
import { UserModule } from '../user/user.module.js';
|
|
import { ISSUE_HISTORY_REPOSITORY } from './domain/repositories/issue-history.repository.interface.js';
|
|
import { IssueHistoryPrismaRepository } from './infrastructure/persistence/prisma/repositories/issue-history.prisma-repository.js';
|
|
import { HistoryController } from './presentation/controllers/history.controller.js';
|
|
import { GetIssueHistoryUseCase } from './application/use-cases/get-issue-history/get-issue-history.use-case.js';
|
|
import { GetDailyIssueStatsUseCase } from './application/use-cases/get-daily-issue-stats/get-daily-issue-stats.use-case.js';
|
|
|
|
/**
|
|
* Чтение истории изменений задач и статистика по ней. Пишет историю
|
|
* issue-модуль (IssuePrismaRepository) — в одной транзакции с задачей;
|
|
* этот модуль от issue зависит, issue о нём не знает.
|
|
*/
|
|
@Module({
|
|
imports: [PrismaModule, IssueModule, UserModule],
|
|
controllers: [HistoryController],
|
|
providers: [
|
|
GetIssueHistoryUseCase,
|
|
GetDailyIssueStatsUseCase,
|
|
{
|
|
// Domain видит только интерфейс IIssueHistoryRepository,
|
|
// конкретную реализацию (Prisma) подставляет DI-контейнер здесь
|
|
provide: ISSUE_HISTORY_REPOSITORY,
|
|
useClass: IssueHistoryPrismaRepository,
|
|
},
|
|
],
|
|
})
|
|
export class HistoryModule {}
|