Move worker entries to controllers

This commit is contained in:
2025-08-12 14:04:47 +03:00
parent a856900504
commit 983de269ad
2 changed files with 1 additions and 1 deletions

View File

@@ -0,0 +1,138 @@
package worker
import (
"context"
"log"
"time"
"git.vakhrushev.me/av/transcriber/internal/service/transcribe"
)
// Worker представляет базовый интерфейс для всех воркеров
type Worker interface {
Start(ctx context.Context)
Name() string
}
// ConversionWorker обрабатывает задачи конвертации
type ConversionWorker struct {
transcribeService *transcribe.TranscribeService
}
func NewConversionWorker(transcribeService *transcribe.TranscribeService) *ConversionWorker {
return &ConversionWorker{
transcribeService: transcribeService,
}
}
func (w *ConversionWorker) Name() string {
return "ConversionWorker"
}
func (w *ConversionWorker) Start(ctx context.Context) {
log.Printf("%s started", w.Name())
for {
select {
case <-ctx.Done():
log.Printf("%s received shutdown signal", w.Name())
return
default:
err := w.transcribeService.FindAndRunConversionJob()
if err != nil {
log.Printf("%s error: %v", w.Name(), err)
}
// Ждем 1 секунду перед следующей итерацией
select {
case <-ctx.Done():
log.Printf("%s received shutdown signal during sleep", w.Name())
return
case <-time.After(1 * time.Second):
// Продолжаем работу
}
}
}
}
// TranscribeWorker обрабатывает задачи транскрипции
type TranscribeWorker struct {
transcribeService *transcribe.TranscribeService
}
func NewTranscribeWorker(transcribeService *transcribe.TranscribeService) *TranscribeWorker {
return &TranscribeWorker{
transcribeService: transcribeService,
}
}
func (w *TranscribeWorker) Name() string {
return "TranscribeWorker"
}
func (w *TranscribeWorker) Start(ctx context.Context) {
log.Printf("%s started", w.Name())
for {
select {
case <-ctx.Done():
log.Printf("%s received shutdown signal", w.Name())
return
default:
err := w.transcribeService.FindAndRunTranscribeJob()
if err != nil {
log.Printf("%s error: %v", w.Name(), err)
}
// Ждем 1 секунду перед следующей итерацией
select {
case <-ctx.Done():
log.Printf("%s received shutdown signal during sleep", w.Name())
return
case <-time.After(1 * time.Second):
// Продолжаем работу
}
}
}
}
// CheckWorker обрабатывает задачи проверки статуса распознавания
type CheckWorker struct {
transcribeService *transcribe.TranscribeService
}
func NewCheckWorker(transcribeService *transcribe.TranscribeService) *CheckWorker {
return &CheckWorker{
transcribeService: transcribeService,
}
}
func (w *CheckWorker) Name() string {
return "CheckWorker"
}
func (w *CheckWorker) Start(ctx context.Context) {
log.Printf("%s started", w.Name())
for {
select {
case <-ctx.Done():
log.Printf("%s received shutdown signal", w.Name())
return
default:
err := w.transcribeService.FindAndRunTranscribeCheckJob()
if err != nil {
log.Printf("%s error: %v", w.Name(), err)
}
// Ждем 1 секунду перед следующей итерацией
select {
case <-ctx.Done():
log.Printf("%s received shutdown signal during sleep", w.Name())
return
case <-time.After(1 * time.Second):
// Продолжаем работу
}
}
}
}