Skip to content

Commit

Permalink
reorganize record transforms and types
Browse files Browse the repository at this point in the history
  • Loading branch information
macfarlandian committed Dec 8, 2020
1 parent f9f2b62 commit 87df75e
Show file tree
Hide file tree
Showing 15 changed files with 678 additions and 447 deletions.
73 changes: 46 additions & 27 deletions spotlight-client/src/contentModels/Metric.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,40 @@

import assertNever from "assert-never";
import { MetricTypeIdList, TenantContent, TenantId } from "../contentApi/types";
import fetchMetrics, { RawMetricData } from "../fetchMetrics";
import * as transforms from "./transforms";
import {
AnyRecord,
CollectionMap,
DemographicsByCategoryRecord,
fetchMetrics,
HistoricalPopulationBreakdownRecord,
MetricMapping,
parolePopulationCurrent,
parolePopulationHistorical,
paroleProgramParticipationCurrent,
paroleRevocationReasons,
paroleSuccessRateDemographics,
paroleSuccessRateMonthly,
PopulationBreakdownByLocationRecord,
prisonAdmissionReasons,
prisonPopulationCurrent,
prisonPopulationHistorical,
prisonReleaseTypes,
prisonStayLengths,
probationPopulationCurrent,
probationPopulationHistorical,
probationProgramParticipationCurrent,
probationRevocationReasons,
probationSuccessRateDemographics,
probationSuccessRateMonthly,
ProgramParticipationCurrentRecord,
RawMetricData,
recidivismRateAllFollowup,
recidivismRateConventionalFollowup,
RecidivismRateRecord,
sentencePopulationCurrent,
SentenceTypeByLocationRecord,
sentenceTypesCurrent,
SupervisionSuccessRateDemographicsRecord,
SupervisionSuccessRateMonthlyRecord,
} from "./types";
} from "../metricsApi";
import { AnyRecord, CollectionMap, MetricMapping } from "./types";

type DataTransformer<RecordFormat> = (rawData: RawMetricData) => RecordFormat[];

Expand Down Expand Up @@ -149,15 +168,15 @@ export function createMetricMapping({
>({
...metadata,
tenantId,
dataTransformer: transforms.sentencePopulationCurrent,
dataTransformer: sentencePopulationCurrent,
sourceFileName: "sentence_type_by_district_by_demographics",
});
break;
case "SentenceTypesCurrent":
metricMapping[metricType] = new Metric<SentenceTypeByLocationRecord>({
...metadata,
tenantId,
dataTransformer: transforms.sentenceTypesCurrent,
dataTransformer: sentenceTypesCurrent,
sourceFileName: "sentence_type_by_district_by_demographics",
});
break;
Expand All @@ -167,7 +186,7 @@ export function createMetricMapping({
>({
...metadata,
tenantId,
dataTransformer: transforms.prisonPopulationCurrent,
dataTransformer: prisonPopulationCurrent,
sourceFileName:
"incarceration_population_by_facility_by_demographics",
});
Expand All @@ -178,7 +197,7 @@ export function createMetricMapping({
>({
...metadata,
tenantId,
dataTransformer: transforms.probationPopulationCurrent,
dataTransformer: probationPopulationCurrent,
sourceFileName: "supervision_population_by_district_by_demographics",
});
break;
Expand All @@ -188,7 +207,7 @@ export function createMetricMapping({
>({
...metadata,
tenantId,
dataTransformer: transforms.parolePopulationCurrent,
dataTransformer: parolePopulationCurrent,
sourceFileName: "supervision_population_by_district_by_demographics",
});
break;
Expand All @@ -198,7 +217,7 @@ export function createMetricMapping({
>({
...metadata,
tenantId,
dataTransformer: transforms.prisonPopulationHistorical,
dataTransformer: prisonPopulationHistorical,
sourceFileName: "incarceration_population_by_month_by_demographics",
});
break;
Expand All @@ -208,7 +227,7 @@ export function createMetricMapping({
>({
...metadata,
tenantId,
dataTransformer: transforms.probationPopulationHistorical,
dataTransformer: probationPopulationHistorical,
sourceFileName: "supervision_population_by_month_by_demographics",
});
break;
Expand All @@ -218,7 +237,7 @@ export function createMetricMapping({
>({
...metadata,
tenantId,
dataTransformer: transforms.parolePopulationHistorical,
dataTransformer: parolePopulationHistorical,
sourceFileName: "supervision_population_by_month_by_demographics",
});
break;
Expand All @@ -228,7 +247,7 @@ export function createMetricMapping({
>({
...metadata,
tenantId,
dataTransformer: transforms.probationProgramParticipationCurrent,
dataTransformer: probationProgramParticipationCurrent,
sourceFileName: "active_program_participation_by_region",
});
break;
Expand All @@ -238,7 +257,7 @@ export function createMetricMapping({
>({
...metadata,
tenantId,
dataTransformer: transforms.paroleProgramParticipationCurrent,
dataTransformer: paroleProgramParticipationCurrent,
sourceFileName: "active_program_participation_by_region",
});
break;
Expand All @@ -248,7 +267,7 @@ export function createMetricMapping({
>({
...metadata,
tenantId,
dataTransformer: transforms.probationSuccessRateMonthly,
dataTransformer: probationSuccessRateMonthly,
sourceFileName: "supervision_success_by_month",
});
break;
Expand All @@ -258,7 +277,7 @@ export function createMetricMapping({
>({
...metadata,
tenantId,
dataTransformer: transforms.paroleSuccessRateMonthly,
dataTransformer: paroleSuccessRateMonthly,
sourceFileName: "supervision_success_by_month",
});
break;
Expand All @@ -268,7 +287,7 @@ export function createMetricMapping({
>({
...metadata,
tenantId,
dataTransformer: transforms.probationSuccessRateDemographics,
dataTransformer: probationSuccessRateDemographics,
sourceFileName: "supervision_success_by_period_by_demographics",
});
break;
Expand All @@ -278,15 +297,15 @@ export function createMetricMapping({
>({
...metadata,
tenantId,
dataTransformer: transforms.paroleSuccessRateDemographics,
dataTransformer: paroleSuccessRateDemographics,
sourceFileName: "supervision_success_by_period_by_demographics",
});
break;
case "ProbationRevocationsAggregate":
metricMapping[metricType] = new Metric<DemographicsByCategoryRecord>({
...metadata,
tenantId,
dataTransformer: transforms.probationRevocationReasons,
dataTransformer: probationRevocationReasons,
sourceFileName:
"supervision_revocations_by_period_by_type_by_demographics",
});
Expand All @@ -295,7 +314,7 @@ export function createMetricMapping({
metricMapping[metricType] = new Metric<DemographicsByCategoryRecord>({
...metadata,
tenantId,
dataTransformer: transforms.paroleRevocationReasons,
dataTransformer: paroleRevocationReasons,
sourceFileName:
"supervision_revocations_by_period_by_type_by_demographics",
});
Expand All @@ -304,39 +323,39 @@ export function createMetricMapping({
metricMapping[metricType] = new Metric<DemographicsByCategoryRecord>({
...metadata,
tenantId,
dataTransformer: transforms.prisonAdmissionReasons,
dataTransformer: prisonAdmissionReasons,
sourceFileName: "incarceration_population_by_admission_reason",
});
break;
case "PrisonReleaseTypeAggregate":
metricMapping[metricType] = new Metric<DemographicsByCategoryRecord>({
...metadata,
tenantId,
dataTransformer: transforms.prisonReleaseTypes,
dataTransformer: prisonReleaseTypes,
sourceFileName: "incarceration_releases_by_type_by_period",
});
break;
case "PrisonRecidivismRateHistorical":
metricMapping[metricType] = new Metric<RecidivismRateRecord>({
...metadata,
tenantId,
dataTransformer: transforms.recidivismRateAllFollowup,
dataTransformer: recidivismRateAllFollowup,
sourceFileName: "recidivism_rates_by_cohort_by_year",
});
break;
case "PrisonRecidivismRateSingleFollowupHistorical":
metricMapping[metricType] = new Metric<RecidivismRateRecord>({
...metadata,
tenantId,
dataTransformer: transforms.recidivismRateConventionalFollowup,
dataTransformer: recidivismRateConventionalFollowup,
sourceFileName: "recidivism_rates_by_cohort_by_year",
});
break;
case "PrisonStayLengthAggregate":
metricMapping[metricType] = new Metric<DemographicsByCategoryRecord>({
...metadata,
tenantId,
dataTransformer: transforms.prisonStayLengths,
dataTransformer: prisonStayLengths,
sourceFileName: "incarceration_lengths_by_demographics",
});
break;
Expand Down

0 comments on commit 87df75e

Please sign in to comment.