UNPKG

@mastra/core

Version:
92 lines 5.16 kB
import type { DatasetRecord, DatasetItem, DatasetItemRow, DatasetVersion, CreateDatasetInput, UpdateDatasetInput, AddDatasetItemInput, UpdateDatasetItemInput, DeleteDatasetItemInput, ListDatasetsInput, ListDatasetsOutput, ListDatasetItemsInput, ListDatasetItemsOutput, ListDatasetVersionsInput, ListDatasetVersionsOutput, BatchInsertItemsInput, BatchDeleteItemsInput, DatasetTenancyFilters } from '../../types.js'; import { StorageDomain } from '../base.js'; /** * Abstract base class for datasets storage domain. * Provides the contract for dataset and dataset item CRUD operations. * * Schema validation is handled in this base class via Template Method pattern. * Subclasses implement protected _do* methods for actual storage operations, * including SCD-2 versioning (version bump, row ops, dataset_version insert). */ export declare abstract class DatasetsStorage extends StorageDomain { constructor(); dangerouslyClearAll(): Promise<void>; abstract createDataset(input: CreateDatasetInput): Promise<DatasetRecord>; /** * Fetch a dataset by ID. When `filters` is provided, the row is only returned * if it also matches the tenancy filters — returns `null` on mismatch (never * throws, to avoid leaking existence across tenants via error timing/text). */ abstract getDatasetById(args: { id: string; filters?: DatasetTenancyFilters; }): Promise<DatasetRecord | null>; /** * Delete a dataset. When `filters` is provided, the delete is a silent no-op * if the row does not match the tenancy filters. Never throws on mismatch. */ abstract deleteDataset(args: { id: string; filters?: DatasetTenancyFilters; }): Promise<void>; abstract listDatasets(args: ListDatasetsInput): Promise<ListDatasetsOutput>; /** * Update a dataset. Validates existing items against new schemas if schemas are changing. * Subclasses implement _doUpdateDataset for actual storage operation. */ updateDataset(args: UpdateDatasetInput): Promise<DatasetRecord>; /** Subclasses implement actual storage update logic */ protected abstract _doUpdateDataset(args: UpdateDatasetInput): Promise<DatasetRecord>; /** * Add an item to a dataset. Validates input/groundTruth against dataset schemas. * Subclasses implement _doAddItem which handles SCD-2 versioning internally. */ addItem(args: AddDatasetItemInput): Promise<DatasetItem>; /** Subclasses implement actual storage add logic with SCD-2 versioning */ protected abstract _doAddItem(args: AddDatasetItemInput): Promise<DatasetItem>; /** * Update an item in a dataset. Validates changed fields against dataset schemas. * Subclasses implement _doUpdateItem which handles SCD-2 versioning internally. */ updateItem(args: UpdateDatasetItemInput): Promise<DatasetItem>; /** Subclasses implement actual storage update logic with SCD-2 versioning */ protected abstract _doUpdateItem(args: UpdateDatasetItemInput): Promise<DatasetItem>; /** * Delete an item from a dataset. Creates a tombstone row via SCD-2. * Subclasses implement _doDeleteItem which handles SCD-2 versioning internally. * * When `args.filters` is set, the delete is a silent no-op if the parent * dataset row does not match the tenancy filters — prevents deleting items * from a dataset in another tenant via a leaked datasetId. */ deleteItem(args: DeleteDatasetItemInput): Promise<void>; /** Subclasses implement actual storage delete logic with SCD-2 versioning */ protected abstract _doDeleteItem(args: DeleteDatasetItemInput): Promise<void>; abstract listItems(args: ListDatasetItemsInput): Promise<ListDatasetItemsOutput>; abstract getItemById(args: { id: string; datasetVersion?: number; }): Promise<DatasetItem | null>; abstract getItemsByVersion(args: { datasetId: string; version: number; }): Promise<DatasetItem[]>; abstract getItemHistory(itemId: string): Promise<DatasetItemRow[]>; abstract createDatasetVersion(datasetId: string, version: number): Promise<DatasetVersion>; abstract listDatasetVersions(input: ListDatasetVersionsInput): Promise<ListDatasetVersionsOutput>; /** * Batch insert items to a dataset. Validates all items against dataset schemas, * then delegates to subclass which handles SCD-2 versioning internally. */ batchInsertItems(input: BatchInsertItemsInput): Promise<DatasetItem[]>; /** Subclasses implement batch insert with SCD-2 versioning */ protected abstract _doBatchInsertItems(input: BatchInsertItemsInput): Promise<DatasetItem[]>; /** * Batch delete items from a dataset. Creates tombstone rows via SCD-2. * Subclasses implement _doBatchDeleteItems which handles SCD-2 versioning internally. */ batchDeleteItems(input: BatchDeleteItemsInput): Promise<void>; /** Subclasses implement batch delete with SCD-2 versioning */ protected abstract _doBatchDeleteItems(input: BatchDeleteItemsInput): Promise<void>; } //# sourceMappingURL=base.d.ts.map