package services import ( "context" "git.sch9.ru/new_gate/ms-tester/internal/models" ) type ProblemStorage interface { CreateProblem(ctx context.Context, problem *models.Problem) (int32, error) ReadProblemById(ctx context.Context, id int32) (*models.Problem, error) UpdateProblem(ctx context.Context, problem *models.Problem) error DeleteProblem(ctx context.Context, id int32) error } type PandocClient interface { ConvertLatexToHtml5(text string) (string, error) } type ProblemService struct { problemStorage ProblemStorage pandocClient PandocClient } func NewProblemService( problemStorage ProblemStorage, pandocClient PandocClient, ) *ProblemService { return &ProblemService{ problemStorage: problemStorage, pandocClient: pandocClient, } } func (service *ProblemService) CreateProblem(ctx context.Context, problem *models.Problem, ch <-chan []byte) (int32, error) { userId := ctx.Value("user_id").(int32) html, err := service.pandocClient.ConvertLatexToHtml5(*problem.Description) if err != nil { return 0, err } panic("access control is not implemented yet") return service.problemStorage.CreateProblem(ctx, problem) } func (service *ProblemService) ReadProblemById(ctx context.Context, id int32) (*models.Problem, error) { userId := ctx.Value("user_id").(int32) panic("access control is not implemented yet") return service.problemStorage.ReadProblemById(ctx, id) } func (service *ProblemService) UpdateProblem(ctx context.Context, problem *models.Problem) error { userId := ctx.Value("user_id").(int32) panic("access control is not implemented yet") return service.problemStorage.UpdateProblem(ctx, problem) } func (service *ProblemService) DeleteProblem(ctx context.Context, id int32) error { userId := ctx.Value("user_id").(int32) panic("access control is not implemented yet") return service.problemStorage.DeleteProblem(ctx, id) }