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.
 
 

35 lines
1.3 KiB

  1. import {GitService, GitServiceImpl} from './Git.service';
  2. import {RouteHandlerMethod} from 'fastify';
  3. import {constants} from 'http2';
  4. import * as codeCore from '@modal/code-core';
  5. import {HttpResponse} from '../../packages/fastify-send-data';
  6. import Controller from '../../utils/types';
  7. import {Uuid} from '@theoryofnekomata/uuid-buffer';
  8. export interface GitController extends Controller<
  9. 'createRepo'
  10. | 'deleteRepo'
  11. > {}
  12. class RepoCreatedResponse extends HttpResponse<codeCore.git.Repo>(constants.HTTP_STATUS_CREATED, 'Repo Created') {}
  13. class RepoDeletedResponse extends HttpResponse(constants.HTTP_STATUS_NO_CONTENT, 'Repo Deleted') {}
  14. export class GitControllerImpl implements GitController {
  15. private readonly gitService: GitService;
  16. constructor() {
  17. this.gitService = new GitServiceImpl()
  18. }
  19. readonly createRepo: RouteHandlerMethod = async (request, reply) => {
  20. const repo = await this.gitService.createRepo(request.body as codeCore.git.CreateRepoData, request.user);
  21. reply.sendData(new RepoCreatedResponse(repo));
  22. }
  23. readonly deleteRepo: RouteHandlerMethod = async (request, reply) => {
  24. const params = request.params as { repoId: string }
  25. await this.gitService.deleteRepo(Uuid.from(params.repoId), request.user)
  26. reply.sendData(new RepoDeletedResponse());
  27. }
  28. }