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
This commit is contained in:
56
repositories/ca.go
Normal file
56
repositories/ca.go
Normal file
@@ -0,0 +1,56 @@
|
||||
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
|
||||
}
|
Reference in New Issue
Block a user