package domain

import (
	"encoding/json"
	"fmt"
)

type ReportMetadataJSON struct {
	BranchID      *int64  `json:"branch_id,omitempty"`
	Interval      *string `json:"interval,omitempty"`
	IntervalStart *string `json:"interval_start,omitempty"`
	IntervalEnd   *string `json:"interval_end,omitempty"`
}

func (r ReportMetadataJSON) ToPG() ([]byte, error) {
	metadata, err := json.Marshal(r)
	if err != nil {
		return nil, fmt.Errorf("failed to marshal report request metadata: %w", err)
	}
	return metadata, nil
}

func ParseReportMetadataJSON(jsonData []byte) (ReportMetadataJSON, error) {
	var metadata ReportMetadataJSON
	if err := json.Unmarshal(jsonData, &metadata); err != nil {
		return ReportMetadataJSON{}, err
	}
	return metadata, nil
}
