1
0
forked from baron/baron-sso

테넌트 목록 조회 cursor기반으로 재구성. 사용자 metadata 미사용 필드 제거

This commit is contained in:
2026-05-13 18:05:51 +09:00
parent a4d707d4d8
commit 5e7b7b878c
85 changed files with 4808 additions and 734 deletions

View File

@@ -4,6 +4,7 @@ import (
"baron-sso-backend/internal/domain"
"context"
"errors"
"strconv"
"strings"
"time"
@@ -33,7 +34,19 @@ func NewTenantRepository(db *gorm.DB) TenantRepository {
}
func (r *tenantRepository) Create(ctx context.Context, tenant *domain.Tenant) error {
return r.db.WithContext(ctx).Create(tenant).Error
tenant.Slug = strings.ToLower(strings.TrimSpace(tenant.Slug))
return r.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
if tenant.Slug != "" {
suffix := "-deleted-" + strconv.FormatInt(time.Now().UTC().UnixNano(), 10)
if err := tx.Unscoped().
Model(&domain.Tenant{}).
Where("slug = ? AND deleted_at IS NOT NULL", tenant.Slug).
Update("slug", gorm.Expr("slug || ?", suffix)).Error; err != nil {
return err
}
}
return tx.Create(tenant).Error
})
}
func (r *tenantRepository) Update(ctx context.Context, tenant *domain.Tenant) error {
@@ -124,7 +137,7 @@ func (r *tenantRepository) List(ctx context.Context, limit, offset int, parentID
return nil, 0, err
}
if err := db.Order("created_at desc").Limit(limit).Offset(offset).Preload("Domains").Find(&tenants).Error; err != nil {
if err := db.Order("created_at desc, id desc").Limit(limit).Offset(offset).Preload("Domains").Find(&tenants).Error; err != nil {
return nil, 0, err
}