diff --git a/dal/dal.go b/dal/dal.go index 4d0c38d..d7ded03 100644 --- a/dal/dal.go +++ b/dal/dal.go @@ -31,6 +31,7 @@ type DAL struct { ResultRepo *result.ResultRepository WorkerRepo *workers.WorkerRepository StatisticsRepo *statistics.StatisticsRepository + WorkerAnsRepo *answer.WorkerAnswerRepository } func New(ctx context.Context, cred string, minioClient *minio.Client) (*DAL, error) { @@ -62,12 +63,17 @@ func New(ctx context.Context, cred string, minioClient *minio.Client) (*DAL, err } } - answerRepo := answer.NewAnswerRepository(answer.Deps{ + workerAnsRepo := answer.NewWorkerAnswerRepo(answer.Deps{ Queries: queries, Pool: pool, AnswerMinio: storerAnswer, }) + answerRepo := answer.NewAnswerRepository(answer.Deps{ + Queries: queries, + Pool: pool, + }) + questionRepo := question.NewQuestionRepository(question.Deps{ Queries: queries, Pool: pool, @@ -102,6 +108,7 @@ func New(ctx context.Context, cred string, minioClient *minio.Client) (*DAL, err ResultRepo: resultRepo, WorkerRepo: workerRepo, StatisticsRepo: statisticsRepo, + WorkerAnsRepo: workerAnsRepo, }, nil } diff --git a/repository/answer/answer.go b/repository/answer/answer.go index c473ce0..893dbb9 100644 --- a/repository/answer/answer.go +++ b/repository/answer/answer.go @@ -15,16 +15,14 @@ type Deps struct { } type AnswerRepository struct { - queries *sqlcgen.Queries - pool *sql.DB - answerMinio *StorerAnswer + queries *sqlcgen.Queries + pool *sql.DB } func NewAnswerRepository(deps Deps) *AnswerRepository { return &AnswerRepository{ - queries: deps.Queries, - pool: deps.Pool, - answerMinio: deps.AnswerMinio, + queries: deps.Queries, + pool: deps.Pool, } } @@ -111,17 +109,6 @@ func (r *AnswerRepository) GetAllAnswersByQuizID(ctx context.Context, session st } for _, row := range rows { - //todo тут забыл добавить проверку на то что minio !=nil - /*if row.Questiontype == model.TypeFile { - fmt.Println("GALL", row.Qid, row.QuestionID, row.Content) - fileURL, err := r.answerMinio.GetAnswerURL(ctx, row.Qid.UUID.String(), row.QuestionID, row.Content.String) - if err != nil { - fmt.Println("GetAnswerURL dal answer minio answer", err) - return nil, err - } - row.Content = sql.NullString{String: fmt.Sprintf("%s|%s", fileURL, row.Content.String), Valid: true} - }*/ - resultAnswer := model.ResultAnswer{ Content: row.Content.String, CreatedAt: row.CreatedAt.Time, diff --git a/repository/answer/worker_answer.go b/repository/answer/worker_answer.go new file mode 100644 index 0000000..3bd1995 --- /dev/null +++ b/repository/answer/worker_answer.go @@ -0,0 +1,55 @@ +package answer + +import ( + "context" + "database/sql" + "fmt" + "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal/sqlcgen" + "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model" +) + +type WorkerAnswerRepository struct { + queries *sqlcgen.Queries + pool *sql.DB + answerMinio *StorerAnswer +} + +func NewWorkerAnswerRepo(deps Deps) *WorkerAnswerRepository { + return &WorkerAnswerRepository{ + queries: deps.Queries, + pool: deps.Pool, + answerMinio: deps.AnswerMinio, + } +} + +func (r *WorkerAnswerRepository) GetAllAnswersByQuizID(ctx context.Context, session string) ([]model.ResultAnswer, error) { + var results []model.ResultAnswer + + rows, err := r.queries.GetAllAnswersByQuizID(ctx, sql.NullString{String: session, Valid: true}) + if err != nil { + return nil, err + } + + for _, row := range rows { + if row.Questiontype == model.TypeFile && r.answerMinio != nil { + fmt.Println("GALL", row.Qid, row.QuestionID, row.Content) + fileURL, err := r.answerMinio.GetAnswerURL(ctx, row.Qid.UUID.String(), row.QuestionID, row.Content.String) + if err != nil { + fmt.Println("GetAnswerURL dal answer minio answer", err) + return nil, err + } + row.Content = sql.NullString{String: fmt.Sprintf("%s|%s", fileURL, row.Content.String), Valid: true} + } + + resultAnswer := model.ResultAnswer{ + Content: row.Content.String, + CreatedAt: row.CreatedAt.Time, + QuestionID: uint64(row.QuestionID), + AnswerID: uint64(row.ID), + } + + results = append(results, resultAnswer) + } + + return results, nil +}