Web API for code.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

54 lines
1.4 KiB

  1. import {User} from '../user';
  2. import {Repo, RepoAction} from '../repo';
  3. import {LogService, LogServiceImpl} from '../log';
  4. export interface RepoLogService {
  5. logCreateRepo(user: User, repoMetadata: Repo, ownerName: string): Promise<void>;
  6. logDeleteRepo(user: User, repo: Repo): Promise<void>;
  7. }
  8. export class RepoLogServiceImpl implements RepoLogService {
  9. private readonly logService: LogService;
  10. constructor() {
  11. this.logService = new LogServiceImpl();
  12. }
  13. private async doLogCreateRepo(user: User, repoMetadata: Repo, ownerName: string): Promise<void> {
  14. try {
  15. await this.logService.create(
  16. user,
  17. RepoAction.REPO_CREATED,
  18. {
  19. repoId: repoMetadata.id.toString(),
  20. repoName: repoMetadata.name,
  21. ownerId: repoMetadata.ownerId.toString(),
  22. ownerName,
  23. ownerType: repoMetadata.ownerType,
  24. },
  25. );
  26. } catch {}
  27. }
  28. async logCreateRepo(user: User, repoMetadata: Repo, ownerName: string): Promise<void> {
  29. await this.doLogCreateRepo(user, repoMetadata, ownerName);
  30. }
  31. private async doLogDeleteRepo(user: User, repo: Repo): Promise<void> {
  32. try {
  33. await this.logService.create(
  34. user,
  35. RepoAction.REPO_REMOVED,
  36. {
  37. repoId: repo.id.toString(),
  38. repoName: repo.name,
  39. },
  40. );
  41. } catch {}
  42. }
  43. async logDeleteRepo(user: User, repo: Repo): Promise<void> {
  44. await this.doLogDeleteRepo(user, repo);
  45. }
  46. }