import {User} from '../user'; import {Repo, RepoAction} from '../repo'; import {LogService, LogServiceImpl} from '../log'; export interface RepoLogService { logCreateRepo(user: User, repoMetadata: Repo, ownerName: string): Promise; logDeleteRepo(user: User, repo: Repo): Promise; } export class RepoLogServiceImpl implements RepoLogService { private readonly logService: LogService; constructor() { this.logService = new LogServiceImpl(); } private async doLogCreateRepo(user: User, repoMetadata: Repo, ownerName: string): Promise { try { await this.logService.create( user, RepoAction.REPO_CREATED, { repoId: repoMetadata.id.toString(), repoName: repoMetadata.name, ownerId: repoMetadata.ownerId.toString(), ownerName, ownerType: repoMetadata.ownerType, }, ); } catch {} } async logCreateRepo(user: User, repoMetadata: Repo, ownerName: string): Promise { await this.doLogCreateRepo(user, repoMetadata, ownerName); } private async doLogDeleteRepo(user: User, repo: Repo): Promise { try { await this.logService.create( user, RepoAction.REPO_REMOVED, { repoId: repo.id.toString(), repoName: repo.name, }, ); } catch {} } async logDeleteRepo(user: User, repo: Repo): Promise { await this.doLogDeleteRepo(user, repo); } }