import type { AutomationRule } from '../../generated/prisma'; /** Default natural mite fall (mites per day) that triggers the varroa rule. */ export const DEFAULT_VARROA_THRESHOLD_MITES_PER_DAY = 10; /** * Effective varroa threshold of the VARROA_THRESHOLD rule. * - no rule row yet: the default rule applies (ensureDefaults creates it active) * - inactive rule: null (no threshold in force) * - active rule: the configured value, or the default if it is not a * positive finite number (a hand-edited config must never disable the check). */ export function varroaThresholdOf( rule: Pick | null, ): number | null { if (rule === null) { return DEFAULT_VARROA_THRESHOLD_MITES_PER_DAY; } if (!rule.active) { return null; } const config = rule.config; if (typeof config !== 'object' || config === null || Array.isArray(config)) { return DEFAULT_VARROA_THRESHOLD_MITES_PER_DAY; } const value = (config as Record).thresholdMitesPerDay; return typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : DEFAULT_VARROA_THRESHOLD_MITES_PER_DAY; }