forked from baron/baron-sso
외부 IdP 연동 관리 API 기능 구현
This commit is contained in:
54
backend/internal/repository/federation_repository.go
Normal file
54
backend/internal/repository/federation_repository.go
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user