1
0
forked from baron/baron-sso

린트 적용

This commit is contained in:
2026-02-23 12:54:21 +09:00
parent c6470d3bae
commit 7d57e5844f
11 changed files with 32 additions and 32 deletions

View File

@@ -59,8 +59,8 @@ func SeedTenants(db *gorm.DB) error {
} }
slog.Info("[Bootstrap] Creating default tenant", "name", config.Name, "slug", config.Slug) slog.Info("[Bootstrap] Creating default tenant", "name", config.Name, "slug", config.Slug)
tenant, err := svc.RegisterTenant(ctx, config.Name, config.Slug, config.Description, config.Domains, nil) tenant, err := svc.RegisterTenant(ctx, config.Name, config.Slug, config.Description, config.Domains, nil)
if err != nil { if err != nil {
slog.Error("Failed to seed tenant", "slug", config.Slug, "error", err) slog.Error("Failed to seed tenant", "slug", config.Slug, "error", err)
return err return err
} }

View File

@@ -22,17 +22,17 @@ const (
// KetoOutbox represents a Keto relationship tuple update event. // KetoOutbox represents a Keto relationship tuple update event.
type KetoOutbox struct { type KetoOutbox struct {
ID string `gorm:"primaryKey;type:uuid;default:gen_random_uuid()" json:"id"` ID string `gorm:"primaryKey;type:uuid;default:gen_random_uuid()" json:"id"`
Namespace string `gorm:"not null" json:"namespace"` Namespace string `gorm:"not null" json:"namespace"`
Object string `gorm:"not null" json:"object"` Object string `gorm:"not null" json:"object"`
Relation string `gorm:"not null" json:"relation"` Relation string `gorm:"not null" json:"relation"`
Subject string `gorm:"not null" json:"subject"` // format: "User:ID" or "Tenant:ID#members" Subject string `gorm:"not null" json:"subject"` // format: "User:ID" or "Tenant:ID#members"
Action string `gorm:"not null" json:"action"` // CREATE, DELETE Action string `gorm:"not null" json:"action"` // CREATE, DELETE
Status string `gorm:"default:'pending';index" json:"status"` Status string `gorm:"default:'pending';index" json:"status"`
RetryCount int `gorm:"default:0" json:"retryCount"` RetryCount int `gorm:"default:0" json:"retryCount"`
LastError string `json:"lastError,omitempty"` LastError string `json:"lastError,omitempty"`
CreatedAt time.Time `json:"createdAt"` CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"` UpdatedAt time.Time `json:"updatedAt"`
ProcessedAt *time.Time `json:"processedAt,omitempty"` ProcessedAt *time.Time `json:"processedAt,omitempty"`
} }

View File

@@ -1,14 +1,13 @@
package repository package repository
import ( import (
"baron-sso-backend/internal/domain"
"context" "context"
"log" "log"
"os" "os"
"testing" "testing"
"time" "time"
"baron-sso-backend/internal/domain"
"github.com/testcontainers/testcontainers-go" "github.com/testcontainers/testcontainers-go"
postgres_module "github.com/testcontainers/testcontainers-go/modules/postgres" postgres_module "github.com/testcontainers/testcontainers-go/modules/postgres"
"github.com/testcontainers/testcontainers-go/wait" "github.com/testcontainers/testcontainers-go/wait"

View File

@@ -1,11 +1,10 @@
package repository package repository
import ( import (
"baron-sso-backend/internal/domain"
"context" "context"
"testing" "testing"
"baron-sso-backend/internal/domain"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )

View File

@@ -1,11 +1,10 @@
package repository package repository
import ( import (
"baron-sso-backend/internal/domain"
"context" "context"
"testing" "testing"
"baron-sso-backend/internal/domain"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )

View File

@@ -13,7 +13,7 @@ type KetoRelayWorker interface {
} }
type ketoRelayWorker struct { type ketoRelayWorker struct {
outboxRepo repository.KetoOutboxRepository outboxRepo repository.KetoOutboxRepository
ketoService KetoService ketoService KetoService
interval time.Duration interval time.Duration
maxRetries int maxRetries int

View File

@@ -17,9 +17,11 @@ type MockKetoOutboxRepositoryShared struct {
func (m *MockKetoOutboxRepositoryShared) Create(ctx context.Context, entry *domain.KetoOutbox) error { func (m *MockKetoOutboxRepositoryShared) Create(ctx context.Context, entry *domain.KetoOutbox) error {
return m.Called(ctx, entry).Error(0) return m.Called(ctx, entry).Error(0)
} }
func (m *MockKetoOutboxRepositoryShared) CreateWithTx(tx *gorm.DB, entry *domain.KetoOutbox) error { func (m *MockKetoOutboxRepositoryShared) CreateWithTx(tx *gorm.DB, entry *domain.KetoOutbox) error {
return m.Called(tx, entry).Error(0) return m.Called(tx, entry).Error(0)
} }
func (m *MockKetoOutboxRepositoryShared) FindPending(ctx context.Context, limit int) ([]domain.KetoOutbox, error) { func (m *MockKetoOutboxRepositoryShared) FindPending(ctx context.Context, limit int) ([]domain.KetoOutbox, error) {
args := m.Called(ctx, limit) args := m.Called(ctx, limit)
if args.Get(0) == nil { if args.Get(0) == nil {
@@ -27,9 +29,11 @@ func (m *MockKetoOutboxRepositoryShared) FindPending(ctx context.Context, limit
} }
return args.Get(0).([]domain.KetoOutbox), args.Error(1) return args.Get(0).([]domain.KetoOutbox), args.Error(1)
} }
func (m *MockKetoOutboxRepositoryShared) UpdateStatus(ctx context.Context, id string, status string, retryCount int, lastError string) error { func (m *MockKetoOutboxRepositoryShared) UpdateStatus(ctx context.Context, id string, status string, retryCount int, lastError string) error {
return m.Called(ctx, id, status, retryCount, lastError).Error(0) return m.Called(ctx, id, status, retryCount, lastError).Error(0)
} }
func (m *MockKetoOutboxRepositoryShared) MarkProcessed(ctx context.Context, id string) error { func (m *MockKetoOutboxRepositoryShared) MarkProcessed(ctx context.Context, id string) error {
return m.Called(ctx, id).Error(0) return m.Called(ctx, id).Error(0)
} }

View File

@@ -112,4 +112,3 @@ func TestTenantService_ApproveTenant_UserNotFound(t *testing.T) {
mockUserRepo.AssertExpectations(t) mockUserRepo.AssertExpectations(t)
mockOutbox.AssertNotCalled(t, "Create") mockOutbox.AssertNotCalled(t, "Create")
} }