forked from baron/baron-sso
55 lines
1.7 KiB
Go
55 lines
1.7 KiB
Go
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
|
|
}
|