@hotmeshio/hotmesh
Version:
Permanent-Memory Workflows & AI Agents
34 lines (33 loc) • 1.96 kB
TypeScript
import { ILogger } from '../logger';
import { ProviderClient } from '../../types/provider';
declare abstract class SearchService<ClientProvider extends ProviderClient> {
protected searchClient: ClientProvider;
protected storeClient: ClientProvider;
protected namespace: string;
protected logger: ILogger;
protected appId: string;
constructor(searchClient: ClientProvider, storeClient?: ClientProvider);
abstract init(namespace: string, appId: string, logger: ILogger): Promise<void>;
abstract createSearchIndex(indexName: string, prefixes: string[], schema: string[]): Promise<void>;
abstract listSearchIndexes(): Promise<string[]>;
abstract setFields(key: string, fields: Record<string, string>): Promise<any>;
abstract updateContext(key: string, fields: Record<string, string>): Promise<any>;
abstract getField(key: string, field: string): Promise<string>;
abstract getFields(key: string, fields: string[]): Promise<string[]>;
abstract getAllFields(key: string): Promise<Record<string, string>>;
abstract deleteFields(key: string, fields: string[]): Promise<number>;
abstract incrementFieldByFloat(key: string, field: string, increment: number): Promise<number>;
abstract sendQuery(query: any): Promise<any>;
abstract sendIndexedQuery(index: string, query: any[]): Promise<any>;
abstract findEntities(entity: string, conditions: Record<string, any>, options?: {
limit?: number;
offset?: number;
}): Promise<any[]>;
abstract findEntityById(entity: string, id: string): Promise<any>;
abstract findEntitiesByCondition(entity: string, field: string, value: any, operator?: '=' | '!=' | '>' | '<' | '>=' | '<=' | 'LIKE' | 'IN', options?: {
limit?: number;
offset?: number;
}): Promise<any[]>;
abstract createEntityIndex(entity: string, field: string, indexType?: 'btree' | 'gin' | 'gist'): Promise<void>;
}
export { SearchService };