package main

import (
	"context"
	"encoding/json"
	"fmt"
	"github.com/go-redis/redis/v8"
)

func serveQueue(
	ctx context.Context,
	client *redis.Client,
	queue string,
	function func(ctx context.Context, value string),
) {
	for {
		element := client.BLPop(ctx, 0, fmt.Sprintf("queue:%s", queue))
		if len(element.Val()) == 2 {
			value := element.Val()[1]
			queueGaugeQueued.Inc()
			go function(ctx, value)
		}
	}
}

func returnResult(ctx context.Context, config *Config, client *redis.Client, result Result) {
	raw, err := json.Marshal(result)
	if err != nil {
		panic(err)
	}
	client.Publish(ctx, config.ResultChannel, string(raw))
}