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 type PersistencePartRunResponse = | { success: false; error: string; } | { success: true; error?: never }; export interface PersistencePart { run: (context: EngineContext) => Promise; }