Filter non-RUB data at ingest, collapse per-currency collections into single RUB Money, drop currency from TbankPortfolioValuePoint, remove NON_RUB_ACTIVITY and screener currency filter. BREAKING CHANGE: per-currency API fields replaced with single RUB Money; stock screener currency param removed.
23 lines
692 B
TypeScript
23 lines
692 B
TypeScript
import type { Money } from '../../common/money.types';
|
|
|
|
import { Decimal, formatDecimal } from '../../common/decimal';
|
|
|
|
const MISSING_PROTO_COMPONENT = 0;
|
|
|
|
const NANO = 1_000_000_000n;
|
|
|
|
export type ProtoDecimal = { nano?: number | string; units?: number | string };
|
|
|
|
export function rubMoney(value?: ProtoDecimal & { currency?: string }): Money | null {
|
|
return value?.currency?.trim().toUpperCase() === 'RUB'
|
|
? { currency: 'RUB', value: formatDecimal(decimal(value)) }
|
|
: null;
|
|
}
|
|
|
|
export function decimal(value: ProtoDecimal): Decimal {
|
|
return {
|
|
value: BigInt(value.units ?? MISSING_PROTO_COMPONENT) * NANO + BigInt(value.nano ?? MISSING_PROTO_COMPONENT),
|
|
scale: 9,
|
|
};
|
|
}
|