1
0
forked from baron/baron-sso

외부 IdP 연동 관리 API 기능 구현

This commit is contained in:
2026-01-28 17:47:56 +09:00
parent f6c7021fda
commit a52ec3b9f8
4 changed files with 232 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
package repository
import (
"baron-sso-backend/internal/domain"
"errors"
"gorm.io/gorm"
)
// FederationRepository handles database operations for IdentityProviderConfig.
type FederationRepository struct {
DB *gorm.DB
}
// NewFederationRepository creates a new FederationRepository.
func NewFederationRepository(db *gorm.DB) *FederationRepository {
return &FederationRepository{DB: db}
}
// Create creates a new identity provider configuration.
func (r *FederationRepository) Create(config *domain.IdentityProviderConfig) error {
return r.DB.Create(config).Error
}
// GetByID retrieves an identity provider configuration by its ID.
func (r *FederationRepository) GetByID(id string) (*domain.IdentityProviderConfig, error) {
var config domain.IdentityProviderConfig
if err := r.DB.First(&config, "id = ?", id).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, nil // Return nil, nil for not found
}
return nil, err
}
return &config, nil
}
// ListByTenantID retrieves all identity provider configurations for a given tenant.
func (r *FederationRepository) ListByTenantID(tenantID string) ([]domain.IdentityProviderConfig, error) {
var configs []domain.IdentityProviderConfig
if err := r.DB.Where("tenant_id = ?", tenantID).Find(&configs).Error; err != nil {
return nil, err
}
return configs, nil
}
// Update updates an existing identity provider configuration.
func (r *FederationRepository) Update(config *domain.IdentityProviderConfig) error {
return r.DB.Save(config).Error
}
// Delete removes an identity provider configuration by its ID.
func (r *FederationRepository) Delete(id string) error {
return r.DB.Delete(&domain.IdentityProviderConfig{}, "id = ?", id).Error
}