feat: backend service

This commit is contained in:
Ilia Denisov
2026-05-06 10:14:55 +03:00
committed by GitHub
parent 3e2622757e
commit f446c6a2ac
1486 changed files with 49720 additions and 266401 deletions
+36
View File
@@ -0,0 +1,36 @@
package geo
import (
"context"
"errors"
"fmt"
"galaxy/backend/internal/postgres/jet/backend/table"
"github.com/go-jet/jet/v2/postgres"
"github.com/google/uuid"
)
// OnUserDeleted removes every `backend.user_country_counters` row for
// userID. It is the geo-side leg of the soft-delete cascade documented
// in `backend/PLAN.md` §5.2 / §5.8 and is invoked from
// `backend/internal/user.Service.SoftDelete` after the
// `accounts.deleted_at` write commits.
//
// The DELETE is idempotent: re-running on a user with no counters is a
// successful no-op. Errors from the database are wrapped with the geo
// prefix so caller logs identify the source.
func (s *Service) OnUserDeleted(ctx context.Context, userID uuid.UUID) error {
if s == nil {
return errors.New("geo: nil service")
}
if userID == uuid.Nil {
return errors.New("geo: nil user id")
}
stmt := table.UserCountryCounters.DELETE().
WHERE(table.UserCountryCounters.UserID.EQ(postgres.UUID(userID)))
if _, err := stmt.ExecContext(ctx, s.db); err != nil {
return fmt.Errorf("geo: delete counters for %s: %w", userID, err)
}
return nil
}