use crate::report::ReportProvenance;
use crate::sns::report::SnsReportContext;
use crate::sns::report::{
SNS_PROPOSAL_REPORT_SCHEMA_VERSION, SNS_PROPOSALS_REPORT_SCHEMA_VERSION, SnsProposalReport,
SnsProposalRequest, SnsProposalRow, SnsProposalsReport, SnsProposalsRequest,
};
pub(in crate::sns::report) const fn sns_proposal_report_from_parts(
request: &SnsProposalRequest,
context: SnsReportContext,
provenance: ReportProvenance,
proposal: SnsProposalRow,
) -> SnsProposalReport {
SnsProposalReport {
provenance,
schema_version: SNS_PROPOSAL_REPORT_SCHEMA_VERSION,
context,
proposal_id: request.proposal_id,
proposal,
}
}
pub(in crate::sns::report) fn sns_proposals_report_from_parts(
request: &SnsProposalsRequest,
context: SnsReportContext,
provenance: ReportProvenance,
proposals: Vec<SnsProposalRow>,
) -> SnsProposalsReport {
let proposal_count = proposals.len();
SnsProposalsReport {
provenance,
schema_version: SNS_PROPOSALS_REPORT_SCHEMA_VERSION,
context,
requested_limit: request.limit,
before_proposal_id: request.before_proposal_id,
status_filter: request.status().as_str().to_string(),
topic_filter: request.topic.as_str().to_string(),
eligibility_filter: request.eligibility.as_str().to_string(),
proposer_filter: request.proposer_neuron_id.clone(),
query_filter: request.query.clone(),
sort: request.sort.as_str().to_string(),
sort_direction: request
.sort
.direction_label(request.sort_direction)
.to_string(),
proposal_count,
proposals,
}
}