Files
Björn Benouarets ccf65ec6c6 feat: implement repository layer for data access
- Add CertificateRepository with CRUD operations
- Implement CertificateAuthorityRepository for CA management
- Add CertificateRequestRepository for CSR handling
- Include UserRepository and OrganizationRepository
- Implement proper error handling and validation
- Add support for soft deletes and relationships
- Include query optimization and filtering capabilities
2025-09-30 11:44:40 +02:00

57 lines
1.8 KiB
Go

package repositories
import (
"git.secnex.io/secnex/certman/models"
"gorm.io/gorm"
)
type CertificateAuthorityRepository struct {
db *gorm.DB
}
// NewCertificateAuthorityRepository creates a new certificate authority repository
func NewCertificateAuthorityRepository(db *gorm.DB) *CertificateAuthorityRepository {
return &CertificateAuthorityRepository{db: db}
}
// GetByID returns a certificate authority by their ID
func (r *CertificateAuthorityRepository) GetByID(id string) (models.CertificateAuthority, error) {
var ca models.CertificateAuthority
if err := r.db.Where("id = ?", id).First(&ca).Error; err != nil {
return models.CertificateAuthority{}, err
}
return ca, nil
}
// GetAll returns all certificate authorities
func (r *CertificateAuthorityRepository) GetAll() ([]models.CertificateAuthority, error) {
var cas []models.CertificateAuthority
if err := r.db.Find(&cas).Error; err != nil {
return []models.CertificateAuthority{}, err
}
return cas, nil
}
// Create creates a new certificate authority
func (r *CertificateAuthorityRepository) Create(ca models.CertificateAuthority) (models.CertificateAuthority, error) {
if err := r.db.Create(&ca).Error; err != nil {
return models.CertificateAuthority{}, err
}
return ca, nil
}
// Update updates a certificate authority
func (r *CertificateAuthorityRepository) Update(ca models.CertificateAuthority) error {
return r.db.Save(&ca).Error
}
// Delete deletes a certificate authority by their ID
func (r *CertificateAuthorityRepository) Delete(id string) error {
return r.db.Delete(&models.CertificateAuthority{}, id).Error
}
// HardDelete deletes a certificate authority by their ID
func (r *CertificateAuthorityRepository) HardDelete(ca models.CertificateAuthority) error {
return r.db.Unscoped().Delete(&ca).Error
}