imc-vibe/backend/internal/db/virtual_domains.go
Christoph Haas c4e3a31b69 Complete GORM to sqlc migration
- Remove GORM dependency, use sqlc for type-safe SQL queries
- Update all handlers to use sqlc patterns (context, value types)
- Fix N+1 query problem in domain listing with JOIN query
- Enable SQL query logging in debug mode (USE_EMBEDDED=false)
- Add comprehensive comments for non-Go developers
2026-03-29 13:56:14 +02:00

53 lines
1.4 KiB
Go

package db
import (
"context"
imcdb "git.workaround.org/chaas/imc/backend/internal/db/sqlc"
)
func (d *DB) GetAllDomains(ctx context.Context) ([]imcdb.VirtualDomain, error) {
return d.Queries.GetAllDomains(ctx)
}
func (d *DB) GetDomainByID(ctx context.Context, id uint32) (imcdb.VirtualDomain, error) {
return d.Queries.GetDomainByID(ctx, id)
}
func (d *DB) GetDomainByName(ctx context.Context, name string) (imcdb.VirtualDomain, error) {
return d.Queries.GetDomainByName(ctx, name)
}
func (d *DB) CreateDomain(ctx context.Context, name string) error {
return d.Queries.CreateDomain(ctx, name)
}
func (d *DB) DeleteDomain(ctx context.Context, id uint32) error {
return d.Queries.DeleteDomain(ctx, id)
}
func (d *DB) GetAllDomainsWithCounts(ctx context.Context) ([]DomainStats, error) {
results, err := d.Queries.GetAllDomainsWithCounts(ctx)
if err != nil {
return nil, err
}
stats := make([]DomainStats, len(results))
for i, r := range results {
stats[i] = DomainStats{
ID: r.ID,
Name: r.Name,
UserCount: r.UserCount,
AliasCount: r.AliasCount,
}
}
return stats, nil
}
func (d *DB) CountUsersByDomain(ctx context.Context, domainID uint32) (int64, error) {
return d.Queries.CountUsersByDomain(ctx, domainID)
}
func (d *DB) CountAliasesByDomain(ctx context.Context, domainID uint32) (int64, error) {
return d.Queries.CountAliasesByDomain(ctx, domainID)
}