Refactor project structure
This commit is contained in:
@@ -5,9 +5,9 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"git.vakhrushev.me/av/transcriber/internal/contract"
|
||||||
"git.vakhrushev.me/av/transcriber/internal/entity"
|
"git.vakhrushev.me/av/transcriber/internal/entity"
|
||||||
contracts "git.vakhrushev.me/av/transcriber/internal/repo"
|
goqu "github.com/doug-martin/goqu/v9"
|
||||||
"github.com/doug-martin/goqu/v9"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type TranscriptJobRepository struct {
|
type TranscriptJobRepository struct {
|
||||||
@@ -162,7 +162,7 @@ func (repo *TranscriptJobRepository) FindAndAcquire(state, acquisitionId string,
|
|||||||
return nil, fmt.Errorf("failed check affected rows: %w", err)
|
return nil, fmt.Errorf("failed check affected rows: %w", err)
|
||||||
}
|
}
|
||||||
if rowsAffected == 0 {
|
if rowsAffected == 0 {
|
||||||
e := contracts.JobNotFoundError{State: state, Message: "appropriate job not found"}
|
e := contract.JobNotFoundError{State: state, Message: "appropriate job not found"}
|
||||||
return nil, &e
|
return nil, &e
|
||||||
}
|
}
|
||||||
if rowsAffected != 1 {
|
if rowsAffected != 1 {
|
@@ -1,4 +1,4 @@
|
|||||||
package repo
|
package contract
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
@@ -5,19 +5,19 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.vakhrushev.me/av/transcriber/internal/repo"
|
"git.vakhrushev.me/av/transcriber/internal/contract"
|
||||||
"git.vakhrushev.me/av/transcriber/internal/service/transcribe"
|
"git.vakhrushev.me/av/transcriber/internal/service"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
)
|
)
|
||||||
|
|
||||||
const baseStorageDir = "data/files"
|
const baseStorageDir = "data/files"
|
||||||
|
|
||||||
type TranscribeHandler struct {
|
type TranscribeHandler struct {
|
||||||
jobRepo repo.TranscriptJobRepository
|
jobRepo contract.TranscriptJobRepository
|
||||||
trsService *transcribe.TranscribeService
|
trsService *service.TranscribeService
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTranscribeHandler(jobRepo repo.TranscriptJobRepository, trsService *transcribe.TranscribeService) *TranscribeHandler {
|
func NewTranscribeHandler(jobRepo contract.TranscriptJobRepository, trsService *service.TranscribeService) *TranscribeHandler {
|
||||||
return &TranscribeHandler{jobRepo: jobRepo, trsService: trsService}
|
return &TranscribeHandler{jobRepo: jobRepo, trsService: trsService}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -15,9 +15,9 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"git.vakhrushev.me/av/transcriber/internal/adapter/sqlite"
|
||||||
"git.vakhrushev.me/av/transcriber/internal/entity"
|
"git.vakhrushev.me/av/transcriber/internal/entity"
|
||||||
"git.vakhrushev.me/av/transcriber/internal/repo/sqlite"
|
"git.vakhrushev.me/av/transcriber/internal/service"
|
||||||
"git.vakhrushev.me/av/transcriber/internal/service/transcribe"
|
|
||||||
"github.com/doug-martin/goqu/v9"
|
"github.com/doug-martin/goqu/v9"
|
||||||
_ "github.com/doug-martin/goqu/v9/dialect/sqlite3"
|
_ "github.com/doug-martin/goqu/v9/dialect/sqlite3"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
@@ -56,7 +56,7 @@ func setupTestRouter(t *testing.T) (*gin.Engine, *TranscribeHandler) {
|
|||||||
fileRepo := sqlite.NewFileRepository(db, gq)
|
fileRepo := sqlite.NewFileRepository(db, gq)
|
||||||
jobRepo := sqlite.NewTranscriptJobRepository(db, gq)
|
jobRepo := sqlite.NewTranscriptJobRepository(db, gq)
|
||||||
|
|
||||||
trsService := transcribe.NewTranscribeService(jobRepo, fileRepo)
|
trsService := service.NewTranscribeService(jobRepo, fileRepo)
|
||||||
|
|
||||||
handler := NewTranscribeHandler(jobRepo, trsService)
|
handler := NewTranscribeHandler(jobRepo, trsService)
|
||||||
|
|
||||||
|
@@ -5,7 +5,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.vakhrushev.me/av/transcriber/internal/service/transcribe"
|
"git.vakhrushev.me/av/transcriber/internal/service"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Worker представляет базовый интерфейс для всех воркеров
|
// Worker представляет базовый интерфейс для всех воркеров
|
||||||
@@ -16,10 +16,10 @@ type Worker interface {
|
|||||||
|
|
||||||
// ConversionWorker обрабатывает задачи конвертации
|
// ConversionWorker обрабатывает задачи конвертации
|
||||||
type ConversionWorker struct {
|
type ConversionWorker struct {
|
||||||
transcribeService *transcribe.TranscribeService
|
transcribeService *service.TranscribeService
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewConversionWorker(transcribeService *transcribe.TranscribeService) *ConversionWorker {
|
func NewConversionWorker(transcribeService *service.TranscribeService) *ConversionWorker {
|
||||||
return &ConversionWorker{
|
return &ConversionWorker{
|
||||||
transcribeService: transcribeService,
|
transcribeService: transcribeService,
|
||||||
}
|
}
|
||||||
@@ -57,10 +57,10 @@ func (w *ConversionWorker) Start(ctx context.Context) {
|
|||||||
|
|
||||||
// TranscribeWorker обрабатывает задачи транскрипции
|
// TranscribeWorker обрабатывает задачи транскрипции
|
||||||
type TranscribeWorker struct {
|
type TranscribeWorker struct {
|
||||||
transcribeService *transcribe.TranscribeService
|
transcribeService *service.TranscribeService
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTranscribeWorker(transcribeService *transcribe.TranscribeService) *TranscribeWorker {
|
func NewTranscribeWorker(transcribeService *service.TranscribeService) *TranscribeWorker {
|
||||||
return &TranscribeWorker{
|
return &TranscribeWorker{
|
||||||
transcribeService: transcribeService,
|
transcribeService: transcribeService,
|
||||||
}
|
}
|
||||||
@@ -98,10 +98,10 @@ func (w *TranscribeWorker) Start(ctx context.Context) {
|
|||||||
|
|
||||||
// CheckWorker обрабатывает задачи проверки статуса распознавания
|
// CheckWorker обрабатывает задачи проверки статуса распознавания
|
||||||
type CheckWorker struct {
|
type CheckWorker struct {
|
||||||
transcribeService *transcribe.TranscribeService
|
transcribeService *service.TranscribeService
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewCheckWorker(transcribeService *transcribe.TranscribeService) *CheckWorker {
|
func NewCheckWorker(transcribeService *service.TranscribeService) *CheckWorker {
|
||||||
return &CheckWorker{
|
return &CheckWorker{
|
||||||
transcribeService: transcribeService,
|
transcribeService: transcribeService,
|
||||||
}
|
}
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
package transcribe
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -8,8 +8,8 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"git.vakhrushev.me/av/transcriber/internal/contract"
|
||||||
"git.vakhrushev.me/av/transcriber/internal/entity"
|
"git.vakhrushev.me/av/transcriber/internal/entity"
|
||||||
"git.vakhrushev.me/av/transcriber/internal/repo"
|
|
||||||
"git.vakhrushev.me/av/transcriber/internal/repo/ffmpeg"
|
"git.vakhrushev.me/av/transcriber/internal/repo/ffmpeg"
|
||||||
"git.vakhrushev.me/av/transcriber/internal/service/s3"
|
"git.vakhrushev.me/av/transcriber/internal/service/s3"
|
||||||
"git.vakhrushev.me/av/transcriber/internal/service/speechkit"
|
"git.vakhrushev.me/av/transcriber/internal/service/speechkit"
|
||||||
@@ -19,11 +19,11 @@ import (
|
|||||||
const baseStorageDir = "data/files"
|
const baseStorageDir = "data/files"
|
||||||
|
|
||||||
type TranscribeService struct {
|
type TranscribeService struct {
|
||||||
jobRepo repo.TranscriptJobRepository
|
jobRepo contract.TranscriptJobRepository
|
||||||
fileRepo repo.FileRepository
|
fileRepo contract.FileRepository
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTranscribeService(jobRepo repo.TranscriptJobRepository, fileRepo repo.FileRepository) *TranscribeService {
|
func NewTranscribeService(jobRepo contract.TranscriptJobRepository, fileRepo contract.FileRepository) *TranscribeService {
|
||||||
return &TranscribeService{jobRepo: jobRepo, fileRepo: fileRepo}
|
return &TranscribeService{jobRepo: jobRepo, fileRepo: fileRepo}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -95,7 +95,7 @@ func (s *TranscribeService) FindAndRunConversionJob() error {
|
|||||||
|
|
||||||
job, err := s.jobRepo.FindAndAcquire(entity.StateCreated, acquisitionId, rottingTime)
|
job, err := s.jobRepo.FindAndAcquire(entity.StateCreated, acquisitionId, rottingTime)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if _, ok := err.(*repo.JobNotFoundError); ok {
|
if _, ok := err.(*contract.JobNotFoundError); ok {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
@@ -154,7 +154,7 @@ func (s *TranscribeService) FindAndRunTranscribeJob() error {
|
|||||||
|
|
||||||
jobRecord, err := s.jobRepo.FindAndAcquire(entity.StateConverted, acquisitionId, rottingTime)
|
jobRecord, err := s.jobRepo.FindAndAcquire(entity.StateConverted, acquisitionId, rottingTime)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if _, ok := err.(*repo.JobNotFoundError); ok {
|
if _, ok := err.(*contract.JobNotFoundError); ok {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
@@ -222,7 +222,7 @@ func (s *TranscribeService) FindAndRunTranscribeCheckJob() error {
|
|||||||
|
|
||||||
job, err := s.jobRepo.FindAndAcquire(entity.StateTranscribe, acquisitionId, rottingTime)
|
job, err := s.jobRepo.FindAndAcquire(entity.StateTranscribe, acquisitionId, rottingTime)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if _, ok := err.(*repo.JobNotFoundError); ok {
|
if _, ok := err.(*contract.JobNotFoundError); ok {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return err
|
return err
|
6
main.go
6
main.go
@@ -12,10 +12,10 @@ import (
|
|||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"git.vakhrushev.me/av/transcriber/internal/adapter/sqlite"
|
||||||
httpcontroller "git.vakhrushev.me/av/transcriber/internal/controller/http"
|
httpcontroller "git.vakhrushev.me/av/transcriber/internal/controller/http"
|
||||||
"git.vakhrushev.me/av/transcriber/internal/controller/worker"
|
"git.vakhrushev.me/av/transcriber/internal/controller/worker"
|
||||||
"git.vakhrushev.me/av/transcriber/internal/repo/sqlite"
|
"git.vakhrushev.me/av/transcriber/internal/service"
|
||||||
"git.vakhrushev.me/av/transcriber/internal/service/transcribe"
|
|
||||||
"github.com/doug-martin/goqu/v9"
|
"github.com/doug-martin/goqu/v9"
|
||||||
_ "github.com/doug-martin/goqu/v9/dialect/sqlite3"
|
_ "github.com/doug-martin/goqu/v9/dialect/sqlite3"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
@@ -55,7 +55,7 @@ func main() {
|
|||||||
fileRepo := sqlite.NewFileRepository(db, gq)
|
fileRepo := sqlite.NewFileRepository(db, gq)
|
||||||
jobRepo := sqlite.NewTranscriptJobRepository(db, gq)
|
jobRepo := sqlite.NewTranscriptJobRepository(db, gq)
|
||||||
|
|
||||||
transcribeService := transcribe.NewTranscribeService(jobRepo, fileRepo)
|
transcribeService := service.NewTranscribeService(jobRepo, fileRepo)
|
||||||
|
|
||||||
// Создаем воркеры
|
// Создаем воркеры
|
||||||
conversionWorker := worker.NewConversionWorker(transcribeService)
|
conversionWorker := worker.NewConversionWorker(transcribeService)
|
||||||
|
Reference in New Issue
Block a user