import { Row_DatapointControlLog, Row_DatapointLog, Row_Sample } from "jm-castle-ac-dc-types"; import { InsertResponse, SelectResponse, UpdateResponse } from "jm-castle-types"; import { ControlContext } from "../engines/ControlContext.mjs"; import { EngineContext } from "../engines/EngineContext.mjs"; import { PersistPart } from "../engines/persist/Types.mjs"; import { Filter_LoggedAt_FromTo_Seconds, Filter_NameLike } from "./maria-db/query/QueryUtils.mjs"; export interface Persistence { type: () => string; tables: { sample: { insert: (values: Row_Sample) => Promise>; update: (values: Row_Sample) => Promise>; select: (filter: Filter_NameLike) => Promise>; selectByKey: (sampleId: string) => Promise>; all: () => Promise>; }; }; datapoint_log: { makePersistPart: (...datapoints: string[]) => PersistPart; insertNow: (values: Row_DatapointLog) => Promise>; select: (filter: Filter_LoggedAt_FromTo_Seconds) => Promise>; }; datapoint_control_log: { makePersistPart: (datapoints: Record) => PersistPart; insertNow: (values: Row_DatapointControlLog) => Promise>; select: (filter: Filter_LoggedAt_FromTo_Seconds) => Promise>; }; disconnect: () => Promise; } export declare type PersistencePartRunResponse = { success: false; error: string; } | { success: true; error?: never; }; export interface PersistencePart { run: (context: EngineContext) => Promise; }