@genkit-ai/flow
Version:
Genkit AI framework workflow APIs.
54 lines • 1.73 kB
JavaScript
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