fix(repos): 完善 commit log 订阅接口。

This commit is contained in:
Ivan Li 2021-03-09 22:50:26 +08:00
parent 22d3dc299c
commit d02cea2115
5 changed files with 17 additions and 8 deletions

View File

@ -13,9 +13,7 @@ import { ListLogsOption } from '../repos/models/list-logs.options';
@Injectable()
export class PipelinesService extends BaseDbService<Pipeline> {
readonly uniqueFields: Array<Array<keyof Pipeline>> = [
['branch', 'projectId'],
];
readonly uniqueFields: Array<Array<keyof Pipeline>> = [['projectId', 'name']];
constructor(
@InjectRepository(Pipeline)
readonly repository: Repository<Pipeline>,

View File

@ -8,6 +8,7 @@ import { ProjectsModule } from '../projects/projects.module';
import { BullModule } from '@nestjs/bull';
import { LIST_LOGS_TASK, LIST_LOGS_PUB_SUB } from './repos.constants';
import { PubSub } from 'graphql-subscriptions';
import { ListLogsConsumer } from './list-logs.consumer';
@Module({
imports: [
@ -21,6 +22,7 @@ import { PubSub } from 'graphql-subscriptions';
providers: [
ReposResolver,
ReposService,
ListLogsConsumer,
{
provide: LIST_LOGS_PUB_SUB,
useValue: new PubSub(),

View File

@ -10,7 +10,11 @@ export class ReposResolver {
@Inject(LIST_LOGS_PUB_SUB)
private readonly pubSub: PubSub,
) {}
@Subscription(() => LogList)
@Subscription(() => LogList, {
resolve: (value) => {
return value;
},
})
listLogsDone() {
return this.pubSub.asyncIterator(LIST_LOGS_DONE);
}

View File

@ -63,7 +63,10 @@ describe('ReposService', () => {
});
describe('listLogs', () => {
it('should be return logs', async () => {
const result = await service.listLogs({ projectId: '1' });
const result = await service.listLogs({
project: getTest1Project(),
branch: 'master',
});
expect(result).toBeDefined();
}, 20_000);
});
@ -71,7 +74,7 @@ describe('ReposService', () => {
it('should be return branches', async () => {
const result = await service.listBranches({ projectId: '1' });
expect(result).toBeDefined();
}, 10_000);
}, 20_000);
});
describe.skip('checkout', () => {

View File

@ -40,7 +40,7 @@ export class ReposService {
await mkdir(workspaceRoot, { recursive: true });
});
const git = gitP(workspaceRoot);
if (!(await git.checkIsRepo())) {
if (!(await git.checkIsRepo().catch(() => false))) {
await git.init();
await git.addRemote(DEFAULT_REMOTE_NAME, project.sshUrl);
}
@ -50,7 +50,9 @@ export class ReposService {
async listLogs({ project, branch }: ListLogsOption) {
const git = await this.getGit(project);
return await git.log(branch ? ['--branches', branch, '--'] : ['--all']);
return await git.log(
branch ? ['--branches', `remotes/origin/${branch}`, '--'] : ['--all'],
);
}
async listBranches(dto: ListBranchesArgs) {