2024-06-17 15:18:47 +00:00
|
|
|
|
package answer
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
"database/sql"
|
2024-09-17 07:23:10 +00:00
|
|
|
|
"encoding/base64"
|
2024-06-17 15:18:47 +00:00
|
|
|
|
"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
|
|
|
|
|
}
|
2024-09-17 07:23:10 +00:00
|
|
|
|
// такая штучка, ну а вдруг в контенте будет сепаратор наш | в base64 не будет
|
|
|
|
|
base64Content := base64.StdEncoding.EncodeToString([]byte(row.Content.String))
|
|
|
|
|
row.Content = sql.NullString{String: fmt.Sprintf("%s|%s", fileURL, base64Content), Valid: true}
|
2024-06-17 15:18:47 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
resultAnswer := model.ResultAnswer{
|
|
|
|
|
Content: row.Content.String,
|
|
|
|
|
CreatedAt: row.CreatedAt.Time,
|
|
|
|
|
QuestionID: uint64(row.QuestionID),
|
|
|
|
|
AnswerID: uint64(row.ID),
|
2024-09-19 08:42:49 +00:00
|
|
|
|
Version: row.Version,
|
2024-06-17 15:18:47 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
results = append(results, resultAnswer)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return results, nil
|
|
|
|
|
}
|