sabisan/internal/store/contact.go

46 lines
1.3 KiB
Go
Raw Normal View History

2026-05-16 23:03:50 +00:00
package store
import "context"
2026-05-17 12:36:50 +00:00
func (s *Store) SaveContact(ctx context.Context, request ContactRequest) error {
_, err := s.db.ExecContext(ctx, `insert into contact_requests (
name, email, phone, project_type, project_location, budget_range, timeline, message, status, notes
) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
request.Name,
request.Email,
request.Phone,
request.ProjectType,
request.ProjectLocation,
request.BudgetRange,
request.Timeline,
request.Message,
coalesceString(request.Status, "new"),
request.Notes,
)
2026-05-16 23:03:50 +00:00
return err
}
func (s *Store) ContactRequests(ctx context.Context) ([]ContactRequest, error) {
2026-05-17 12:36:50 +00:00
rows, err := s.db.QueryContext(ctx, `select id, name, email, phone, project_type, project_location, budget_range, timeline, message, status, notes, created_at from contact_requests order by created_at desc, id desc`)
2026-05-16 23:03:50 +00:00
if err != nil {
return nil, err
}
defer rows.Close()
var requests []ContactRequest
for rows.Next() {
var r ContactRequest
2026-05-17 12:36:50 +00:00
if err := rows.Scan(&r.ID, &r.Name, &r.Email, &r.Phone, &r.ProjectType, &r.ProjectLocation, &r.BudgetRange, &r.Timeline, &r.Message, &r.Status, &r.Notes, &r.CreatedAt); err != nil {
2026-05-16 23:03:50 +00:00
return nil, err
}
requests = append(requests, r)
}
return requests, rows.Err()
}
2026-05-17 12:36:50 +00:00
func coalesceString(value, fallback string) string {
if value == "" {
return fallback
}
return value
}