All checks were successful
Dev Build / build-test (pull_request) Successful in 2m39s
51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
package repositories
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/CubeCraft-Creations/Extrudex/backend/internal/models"
|
|
"github.com/jackc/pgx/v5/pgxpool"
|
|
)
|
|
|
|
// MaterialModifierRepository handles database queries for material modifiers.
|
|
type MaterialModifierRepository struct {
|
|
pool *pgxpool.Pool
|
|
}
|
|
|
|
// NewMaterialModifierRepository creates a MaterialModifierRepository backed by the given pool.
|
|
func NewMaterialModifierRepository(pool *pgxpool.Pool) *MaterialModifierRepository {
|
|
return &MaterialModifierRepository{pool: pool}
|
|
}
|
|
|
|
// GetAll returns all material modifiers ordered by name.
|
|
func (r *MaterialModifierRepository) GetAll(ctx context.Context) ([]models.MaterialModifier, error) {
|
|
rows, err := r.pool.Query(ctx, `
|
|
SELECT id, name, description, created_at, updated_at
|
|
FROM material_modifiers
|
|
ORDER BY name
|
|
`)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
|
|
var modifiers []models.MaterialModifier
|
|
for rows.Next() {
|
|
var m models.MaterialModifier
|
|
if err := rows.Scan(
|
|
&m.ID, &m.Name, &m.Description,
|
|
&m.CreatedAt, &m.UpdatedAt,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
modifiers = append(modifiers, m)
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
if modifiers == nil {
|
|
modifiers = []models.MaterialModifier{}
|
|
}
|
|
return modifiers, nil
|
|
}
|