UNPKG

@genkit-ai/flow

Version:

Genkit AI framework workflow APIs.

54 lines 1.73 kB
import { __async } from "./chunk-7OAPEGJQ.mjs"; import { FlowStateSchema } from "@genkit-ai/core"; import { logger } from "@genkit-ai/core/logging"; import { Firestore } from "@google-cloud/firestore"; class FirestoreStateStore { constructor(params = {}) { this.collection = params.collection || "genkit-flows"; this.databaseId = params.databaseId || "(default)"; this.db = new Firestore({ databaseId: this.databaseId, ignoreUndefinedProperties: true, credentials: params.credentials }); } load(id) { return __async(this, null, function* () { const data = (yield this.db.collection(this.collection).doc(id).get()).data(); if (!data) { return void 0; } return FlowStateSchema.parse(data); }); } save(id, state) { return __async(this, null, function* () { logger.debug(state, "save state"); yield this.db.collection(this.collection).doc(id).set(state); }); } list(query) { return __async(this, null, function* () { const limit = (query == null ? void 0 : query.limit) || 10; let fsQuery = this.db.collection(this.collection).orderBy("startTime", "desc"); if (query == null ? void 0 : query.continuationToken) { fsQuery = fsQuery.startAfter(parseInt(query.continuationToken)); } fsQuery = fsQuery.limit(limit); const data = yield fsQuery.get(); const lastVisible = data.docs[data.docs.length - 1]; return { flowStates: data.docs.map((d) => d.data()), continuationToken: data.docs.length === limit ? `${lastVisible.data().startTime}` : void 0 }; }); } } export { FirestoreStateStore }; //# sourceMappingURL=firestoreStateStore.mjs.map