UNPKG

n8n

Version:

n8n Workflow Automation Tool

85 lines 3.84 kB
"use strict"; 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.AgentRepository = void 0; const di_1 = require("@n8n/di"); const typeorm_1 = require("@n8n/typeorm"); const agent_entity_1 = require("../entities/agent.entity"); let AgentRepository = class AgentRepository extends typeorm_1.Repository { constructor(dataSource) { super(agent_entity_1.Agent, dataSource.manager); } async findByProjectId(projectId) { return await this.find({ where: { projectId }, relations: { activeVersion: true }, order: { updatedAt: 'DESC' }, }); } async findByProjectIdsPaginated(projectIds, options) { if (projectIds.length === 0) return { count: 0, data: [] }; const query = this.createQueryBuilder('agent') .leftJoinAndSelect('agent.activeVersion', 'activeVersion') .where('agent.projectId IN (:...projectIds)', { projectIds }); this.applyFilters(query, options.filter); this.applySorting(query, options.sortBy); query.skip(options.skip).take(options.take); const [data, count] = await query.getManyAndCount(); return { count, data }; } applyFilters(query, filter) { if (filter?.query) { query.andWhere('LOWER(agent.name) LIKE LOWER(:query)', { query: `%${filter.query}%` }); } } applySorting(query, sortBy) { const [field = 'updatedAt', direction = 'desc'] = sortBy?.split(':') ?? []; const sortDirection = direction.toLowerCase() === 'asc' ? 'ASC' : 'DESC'; if (field === 'name') { query .addSelect('LOWER(agent.name)', 'agent_name_lower') .orderBy('agent_name_lower', sortDirection); return; } query.orderBy(`agent.${field}`, sortDirection); } async findByIdAndProjectId(id, projectId) { return await this.findOne({ where: { id, projectId }, relations: { activeVersion: true }, }); } async findByIdsAndProjectId(ids, projectId) { if (ids.length === 0) return []; return await this.find({ select: ['id', 'activeVersionId'], where: { id: (0, typeorm_1.In)(ids), projectId }, }); } async findPublished() { return await this.createQueryBuilder('agent') .innerJoinAndSelect('agent.activeVersion', 'activeVersion') .getMany(); } async findByIntegrationCredential(type, credentialId, projectId, excludeAgentId) { const agents = await this.find({ where: { projectId } }); return agents.filter((agent) => agent.id !== excludeAgentId && (agent.integrations ?? []).some((i) => i.type === type && i.credentialId === credentialId)); } }; exports.AgentRepository = AgentRepository; exports.AgentRepository = AgentRepository = __decorate([ (0, di_1.Service)(), __metadata("design:paramtypes", [typeorm_1.DataSource]) ], AgentRepository); //# sourceMappingURL=agent.repository.js.map