Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 0 additions & 12 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -206,10 +206,6 @@ generate-mocks: install-mockgen clean-mocks
@$(MOCKGEN) -source=internal/wtrhandler/deadletter_asynq_handle.go -destination=internal/wtrhandler/deadletter_mock.go -package=wtrhandler DeadLetterStore
@echo "$(BLUE)Gerando mock para Fetcher...$(NC)"
@$(MOCKGEN) -source=internal/wtrhandler/request_handle_asynq.go -destination=internal/wtrhandler/fetcher_mock.go -package=wtrhandler Fetcher
@echo "$(BLUE)Gerando mock para Cache...$(NC)"
@$(MOCKGEN) -source=pkg/cachemanager/adapter.go -destination=pkg/cachemanager/cache_mock.go -package=cachemanager
@echo "$(BLUE)Gerando mock para Backoffice Repository...$(NC)"
@$(MOCKGEN) -source=internal/backoffice/register_consumer.go -destination=internal/backoffice/repository_mock.go -package=backoffice
@echo "$(BLUE)Gerando mock para Publisher...$(NC)"
@$(MOCKGEN) -source=pkg/pubadapter/adapter.go -destination=pkg/publisher/publisher_task_mock.go -package=publisher
@echo "$(BLUE)Gerando mock para Publisher em pubadapter...$(NC)"
Expand Down Expand Up @@ -257,11 +253,6 @@ check-mocks:
echo "Execute 'make generate-mocks' para gerar os mocks"; \
exit 1; \
fi
@if [ ! -f "internal/backoffice/repository_mock.go" ]; then \
echo "$(YELLOW)⚠️ Backoffice Repository mock não encontrado!$(NC)"; \
echo "Execute 'make generate-mocks' para gerar os mocks"; \
exit 1; \
fi
# TODO: Descomentar quando os mocks de insights forem implementados
# @if [ ! -f "internal/wtrhandler/mock_publisher_insights.go" ]; then \
# echo "$(YELLOW)⚠️ PublisherInsights mock não encontrado!$(NC)"; \
Expand Down Expand Up @@ -290,8 +281,6 @@ clean-mocks:
@rm -f pkg/publisher/publisher_task_mock.go
@echo "$(BLUE)Removendo Publisher mock em pubadapter...$(NC)"
@rm -f pkg/pubadapter/publisher_task_mock.go
@echo "$(BLUE)Removendo Backoffice Repository mock...$(NC)"
@rm -f internal/backoffice/repository_mock.go
@echo "$(BLUE)Removendo PublisherInsights mock...$(NC)"
@rm -f internal/wtrhandler/mock_publisher_insights.go
@echo "$(BLUE)Removendo ConsumerInsights mock...$(NC)"
Expand Down Expand Up @@ -335,4 +324,3 @@ help:
@echo " $(BLUE)• Cache$(NC) - pkg/cachemanager/cache_mock.go"
@echo " $(BLUE)• Publisher$(NC) - pkg/publisher/publisher_task_mock.go"
@echo " $(BLUE)• Publisher (pubadapter)$(NC) - pkg/pubadapter/publisher_task_mock.go"
@echo " $(BLUE)• Backoffice Repository$(NC) - internal/backoffice/repository_mock.go"
7 changes: 0 additions & 7 deletions cmd/api/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,9 @@ import (
"github.com/IsaacDSC/gqueue/cmd/setup/api"
"github.com/IsaacDSC/gqueue/cmd/setup/backoffice"
"github.com/IsaacDSC/gqueue/internal/interstore"
"github.com/IsaacDSC/gqueue/pkg/cachemanager"
"github.com/redis/go-redis/v9"
)

const appName = "gqueue"

// waitForShutdown waits for SIGINT/SIGTERM and gracefully shuts down the provided servers.
func waitForShutdown(apiServer, backofficeServer *http.Server) {
quit := make(chan os.Signal, 1)
Expand Down Expand Up @@ -116,8 +113,6 @@ func main() {
panic(err)
}

cc := cachemanager.NewStrategy(appName, cacheClient)

service := flag.String("service", "all", "service to run")
flag.Parse()

Expand All @@ -136,7 +131,6 @@ func main() {
if *service == "backoffice" {
backofficeServer := backoffice.Start(
cacheClient,
cc,
store,
storeInsights,
)
Expand All @@ -152,7 +146,6 @@ func main() {

backofficeServer := backoffice.Start(
cacheClient,
cc,
store,
storeInsights,
)
Expand Down
12 changes: 5 additions & 7 deletions cmd/setup/backoffice/httpserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import (
"github.com/IsaacDSC/gqueue/internal/cfg"
"github.com/IsaacDSC/gqueue/internal/domain"
"github.com/IsaacDSC/gqueue/internal/interstore"
"github.com/IsaacDSC/gqueue/pkg/cachemanager"
"github.com/IsaacDSC/gqueue/pkg/httpadapter"
"github.com/redis/go-redis/v9"
)
Expand All @@ -21,19 +20,18 @@ type InsightsStore interface {

func Start(
rdsclient *redis.Client,
cache cachemanager.Cache,
store interstore.Repository,
insightsStore InsightsStore,
) *http.Server {
mux := http.NewServeMux()

routes := []httpadapter.HttpHandle{
backoffice.GetHealthCheckHandler(),
backoffice.PatchConsumer(cache, store),
backoffice.GetEvent(cache, store),
backoffice.GetEvents(cache, store),
backoffice.GetRegisterTaskConsumerArchived(cache, store),
backoffice.RemoveEvent(cache, store),
backoffice.PatchConsumer(store),
backoffice.GetEvent(store),
backoffice.GetEvents(store),
backoffice.GetRegisterTaskConsumerArchived(store),
backoffice.RemoveEvent(store),
backoffice.GetInsightsHandle(insightsStore),
}

Expand Down
2 changes: 1 addition & 1 deletion example/example.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ curl -X PATCH \

curl -X GET \
-H "Authorization: Basic YWRtaW46cGFzc3dvcmQ=" \
http://localhost:8080/api/v1/my-app/events/payment.processed | jq
http://localhost:8080/api/v1/events/{{eventName}} | jq

curl -X GET \
-H "Authorization: Basic YWRtaW46cGFzc3dvcmQ=" \
Expand Down
14 changes: 0 additions & 14 deletions internal/backoffice/event_key.go

This file was deleted.

18 changes: 5 additions & 13 deletions internal/backoffice/get_event.go
Original file line number Diff line number Diff line change
@@ -1,31 +1,23 @@
package backoffice

import (
"context"
"encoding/json"
"net/http"

"github.com/IsaacDSC/gqueue/internal/domain"
"github.com/IsaacDSC/gqueue/pkg/cachemanager"
"github.com/IsaacDSC/gqueue/pkg/httpadapter"
"github.com/IsaacDSC/gqueue/pkg/queryparser"
)

func GetEvent(cc cachemanager.Cache, repo Repository) httpadapter.HttpHandle {
func GetEvent(repo Repository) httpadapter.HttpHandle {
return httpadapter.HttpHandle{
Path: "GET /api/v1/{service_name}/events/{event_name}",
Path: "GET /api/v1/events/{event_name}",
Handler: func(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
serviceName := r.PathValue("service_name")
eventName := r.PathValue("event_name")

key := eventKey(cc, serviceName, eventName)
defaultTTL := cc.GetDefaultTTL()

var event domain.Event
if err := cc.Once(ctx, key, &event, defaultTTL, func(ctx context.Context) (any, error) {
return repo.GetInternalEvent(ctx, eventName)
}); err != nil {
event, err := repo.GetInternalEvent(ctx, eventName)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
Expand All @@ -39,7 +31,7 @@ func GetEvent(cc cachemanager.Cache, repo Repository) httpadapter.HttpHandle {
}
}

func GetEvents(cc cachemanager.Cache, repo Repository) httpadapter.HttpHandle {
func GetEvents(repo Repository) httpadapter.HttpHandle {
return httpadapter.HttpHandle{
Path: "GET /api/v1/events",
Handler: func(w http.ResponseWriter, r *http.Request) {
Expand Down
14 changes: 2 additions & 12 deletions internal/backoffice/register_consumer.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package backoffice

import (
"context"
"encoding/json"
"fmt"
"net/http"

"github.com/IsaacDSC/gqueue/internal/cfg"
"github.com/IsaacDSC/gqueue/internal/domain"
"github.com/IsaacDSC/gqueue/pkg/cachemanager"
"github.com/IsaacDSC/gqueue/pkg/ctxlogger"
"github.com/IsaacDSC/gqueue/pkg/httpadapter"
"github.com/google/uuid"
Expand All @@ -34,7 +32,7 @@ func (e *EventDto) ToDomain() domain.Event {
}
}

func PatchConsumer(cc cachemanager.Cache, repo Repository) httpadapter.HttpHandle {
func PatchConsumer(repo Repository) httpadapter.HttpHandle {
return httpadapter.HttpHandle{
Path: "PATCH /api/v1/event/consumer",
Handler: func(w http.ResponseWriter, r *http.Request) {
Expand All @@ -54,15 +52,7 @@ func PatchConsumer(cc cachemanager.Cache, repo Repository) httpadapter.HttpHandl
return
}

key := eventKey(cc, event.ServiceName, event.Name)
defaultTTL := cc.GetDefaultTTL()

if err := cc.Hydrate(ctx, key, &payload, defaultTTL, func(ctx context.Context) (any, error) {
if err := repo.Upsert(ctx, event); err != nil {
return domain.Event{}, fmt.Errorf("failed to upsert internal event: %w", err)
}
return payload, nil
}); err != nil {
if err := repo.Upsert(ctx, event); err != nil {
l.Error("failed to save consumer", "error", err)
http.Error(w, "failed to save consumer", http.StatusInternalServerError)
return
Expand Down
24 changes: 6 additions & 18 deletions internal/backoffice/register_event_consumer_archived.go
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
package backoffice

import (
"context"
"encoding/json"
"fmt"
"net/http"

"github.com/IsaacDSC/gqueue/internal/domain"
"github.com/IsaacDSC/gqueue/pkg/cachemanager"
"github.com/IsaacDSC/gqueue/pkg/ctxlogger"
"github.com/IsaacDSC/gqueue/pkg/httpadapter"
)

func GetRegisterTaskConsumerArchived(cc cachemanager.Cache, repo Repository) httpadapter.HttpHandle {
func GetRegisterTaskConsumerArchived(repo Repository) httpadapter.HttpHandle {
return httpadapter.HttpHandle{
Path: "POST /events/schedule/archived",
Handler: func(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
l := ctxlogger.GetLogger(ctx)
defer r.Body.Close()

var payload domain.Event
Expand All @@ -25,23 +24,12 @@ func GetRegisterTaskConsumerArchived(cc cachemanager.Cache, repo Repository) htt
}

payload.State = "archived"
typeEvent := "schedule"

key := cc.Key(typeEvent, payload.State, payload.ServiceName, payload.Name)

if err := cc.Hydrate(ctx, key, &payload, cc.GetDefaultTTL(), func(ctx context.Context) (any, error) {
if err := repo.Upsert(ctx, payload); err != nil {
return domain.Event{}, fmt.Errorf("failed to upsert internal event: %w", err)
}
return payload, nil
}); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
if err := repo.Upsert(ctx, payload); err != nil {
l.Error("failed to upsert internal event", "error", err)
http.Error(w, "failed to upsert internal event", http.StatusInternalServerError)
}

consumersKey := cc.Key("consumers", typeEvent, payload.State)
cc.IncrementValue(ctx, consumersKey, &payload)

w.WriteHeader(http.StatusCreated)
},
}
Expand Down
18 changes: 5 additions & 13 deletions internal/backoffice/remove_event_handle.go
Original file line number Diff line number Diff line change
@@ -1,35 +1,27 @@
package backoffice

import (
"context"
"net/http"

"github.com/IsaacDSC/gqueue/pkg/cachemanager"
"github.com/IsaacDSC/gqueue/pkg/ctxlogger"
httpadapter "github.com/IsaacDSC/gqueue/pkg/httpadapter"
"github.com/google/uuid"
)

func RemoveEvent(cc cachemanager.Cache, repo Repository) httpadapter.HttpHandle {
func RemoveEvent(repo Repository) httpadapter.HttpHandle {
return httpadapter.HttpHandle{
Path: "DELETE /api/v1/event/{id}",
Handler: func(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
l := ctxlogger.GetLogger(ctx)
eventID, err := uuid.Parse(r.PathValue("id"))
if err != nil {
http.Error(w, "Invalid event ID", http.StatusBadRequest)
return
}

event, err := repo.GetEventByID(ctx, eventID)
if err != nil {
http.Error(w, "Event not found", http.StatusNotFound)
return
}

key := eventKey(cc, event.ServiceName, event.Name)
if err := cc.RemoveValue(ctx, key, func(ctx context.Context) error {
return repo.DisabledEvent(ctx, eventID)
}); err != nil {
if err := repo.DisabledEvent(ctx, eventID); err != nil {
l.Error("failed to disable event", "error", err)
http.Error(w, "Failed to remove event", http.StatusInternalServerError)
return
}
Expand Down
15 changes: 0 additions & 15 deletions pkg/cachemanager/adapter.go

This file was deleted.

Loading