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 }