- 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
53 lines
1.4 KiB
Go
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)
|
|
}
|