package answer import ( "context" "database/sql" "encoding/base64" "fmt" "gitea.pena/SQuiz/common/dal/sqlcgen" "gitea.pena/SQuiz/common/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 } // такая штучка, ну а вдруг в контенте будет сепаратор наш | в base64 не будет base64Content := base64.StdEncoding.EncodeToString([]byte(row.Content.String)) row.Content = sql.NullString{String: fmt.Sprintf("%s|%s", fileURL, base64Content), Valid: true} } resultAnswer := model.ResultAnswer{ Content: row.Content.String, CreatedAt: row.CreatedAt.Time, QuestionID: uint64(row.QuestionID), AnswerID: uint64(row.ID), Version: row.Version, } results = append(results, resultAnswer) } return results, nil }