|
- import {GitService, GitServiceImpl} from './Git.service';
- import {RouteHandlerMethod} from 'fastify';
- import {constants} from 'http2';
- import * as codeCore from '@modal/code-core';
- import {HttpResponse} from '../../packages/fastify-send-data';
- import Controller from '../../utils/types';
- import {Uuid} from '@theoryofnekomata/uuid-buffer';
-
- export interface GitController extends Controller<
- 'createRepo'
- | 'deleteRepo'
- > {}
-
- class RepoCreatedResponse extends HttpResponse<codeCore.git.Repo>(constants.HTTP_STATUS_CREATED, 'Repo Created') {}
- class RepoDeletedResponse extends HttpResponse(constants.HTTP_STATUS_NO_CONTENT, 'Repo Deleted') {}
-
- export class GitControllerImpl implements GitController {
- private readonly gitService: GitService;
-
- constructor() {
- this.gitService = new GitServiceImpl()
- }
-
- readonly createRepo: RouteHandlerMethod = async (request, reply) => {
- const repo = await this.gitService.createRepo(request.body as codeCore.git.CreateRepoData, request.user);
- reply.sendData(new RepoCreatedResponse(repo));
- }
-
- readonly deleteRepo: RouteHandlerMethod = async (request, reply) => {
- const params = request.params as { repoId: string }
- await this.gitService.deleteRepo(Uuid.from(params.repoId), request.user)
- reply.sendData(new RepoDeletedResponse());
- }
- }
|