n8n
Version:
n8n Workflow Automation Tool
92 lines • 4.39 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AgentExecutionRepository = void 0;
const di_1 = require("@n8n/di");
const typeorm_1 = require("@n8n/typeorm");
const agent_execution_entity_1 = require("../entities/agent-execution.entity");
let AgentExecutionRepository = class AgentExecutionRepository extends typeorm_1.Repository {
constructor(dataSource) {
super(agent_execution_entity_1.AgentExecution, dataSource.manager);
}
async findByThreadIdOrdered(threadId) {
return await this.find({ where: { threadId }, order: { createdAt: 'ASC' } });
}
async findFirstUserMessageByThreadIds(threadIds) {
if (threadIds.length === 0)
return new Map();
const tableName = this.metadata.tablePath;
const rows = await this.createQueryBuilder('e')
.select(['e."threadId" AS "threadId"', 'e."userMessage" AS "userMessage"'])
.where('e."threadId" IN (:...threadIds)', { threadIds })
.andWhere('e."userMessage" IS NOT NULL')
.andWhere('e."userMessage" != \'\'')
.andWhere(`e."createdAt" = (SELECT MIN(e2."createdAt") FROM ${tableName} e2 ` +
'WHERE e2."threadId" = e."threadId" AND e2."userMessage" IS NOT NULL ' +
'AND e2."userMessage" != \'\')')
.getRawMany();
return new Map(rows.map((r) => [r.threadId, r.userMessage]));
}
async findFirstSourceByThreadIds(threadIds) {
if (threadIds.length === 0)
return new Map();
const tableName = this.metadata.tablePath;
const rows = await this.createQueryBuilder('e')
.select(['e."threadId" AS "threadId"', 'e."source" AS "source"'])
.where('e."threadId" IN (:...threadIds)', { threadIds })
.andWhere('e."source" IS NOT NULL')
.andWhere(`e."createdAt" = (SELECT MIN(e2."createdAt") FROM ${tableName} e2 ` +
'WHERE e2."threadId" = e."threadId" AND e2."source" IS NOT NULL)')
.getRawMany();
return new Map(rows.map((r) => [r.threadId, r.source]));
}
async findSuspendedWithoutModel(threadId) {
return await this.find({
where: { threadId, hitlStatus: 'suspended', model: (0, typeorm_1.IsNull)() },
});
}
async findLatestSuspendedByThreadId(threadId) {
return await this.findOne({
where: { threadId, hitlStatus: 'suspended' },
order: { createdAt: 'DESC' },
});
}
async backfillModel(executionIds, model) {
if (executionIds.length === 0)
return;
await this.createQueryBuilder()
.update(agent_execution_entity_1.AgentExecution)
.set({ model })
.whereInIds(executionIds)
.execute();
}
async deleteByThreadId(threadId) {
await this.delete({ threadId });
}
async findBlobRefsByThreadId(threadId) {
return await this.find({
select: ['id', 'storedAt'],
where: { threadId, storedAt: (0, typeorm_1.Not)('db') },
});
}
async findBlobRefsByAgentId(agentId) {
return await this.find({
select: ['id', 'threadId', 'storedAt'],
where: { thread: { agentId }, storedAt: (0, typeorm_1.Not)('db') },
});
}
};
exports.AgentExecutionRepository = AgentExecutionRepository;
exports.AgentExecutionRepository = AgentExecutionRepository = __decorate([
(0, di_1.Service)(),
__metadata("design:paramtypes", [typeorm_1.DataSource])
], AgentExecutionRepository);
//# sourceMappingURL=agent-execution.repository.js.map