2026-06-27 17:08:38 +02:00
|
|
|
"use server";
|
|
|
|
|
|
|
|
|
|
import { and, desc, eq, sql } from "drizzle-orm";
|
|
|
|
|
import { db } from "@/db";
|
|
|
|
|
import { Agent, agent, organizationAgent } from "@/db/schema/08_agent";
|
|
|
|
|
import { Database, database } from "@/db/schema/07_database";
|
2026-04-10 18:37:35 +02:00
|
|
|
|
|
|
|
|
export async function getOrganizationAgents(organizationId: string) {
|
2026-06-27 17:08:38 +02:00
|
|
|
return (await db
|
|
|
|
|
.select({
|
|
|
|
|
id: agent.id,
|
|
|
|
|
name: agent.name,
|
|
|
|
|
organizationId: agent.organizationId,
|
|
|
|
|
slug: agent.slug,
|
|
|
|
|
healthErrorCount: agent.healthErrorCount,
|
|
|
|
|
description: agent.description,
|
|
|
|
|
isArchived: agent.isArchived,
|
|
|
|
|
lastContact: agent.lastContact,
|
|
|
|
|
version: agent.version,
|
|
|
|
|
updatedAt: agent.updatedAt,
|
|
|
|
|
createdAt: agent.createdAt,
|
|
|
|
|
deletedAt: agent.deletedAt,
|
|
|
|
|
databases: sql<Database[]>`
|
2026-04-10 18:37:35 +02:00
|
|
|
COALESCE(
|
|
|
|
|
json_agg(${database}.*) FILTER (WHERE ${database}.id IS NOT NULL),
|
|
|
|
|
'[]'
|
|
|
|
|
)
|
|
|
|
|
`,
|
2026-06-27 17:08:38 +02:00
|
|
|
})
|
|
|
|
|
.from(organizationAgent)
|
|
|
|
|
.innerJoin(agent, eq(organizationAgent.agentId, agent.id))
|
|
|
|
|
.leftJoin(database, eq(database.agentId, agent.id))
|
|
|
|
|
.groupBy(agent.id)
|
|
|
|
|
.orderBy(desc(agent.createdAt))
|
|
|
|
|
.where(
|
|
|
|
|
and(
|
|
|
|
|
eq(organizationAgent.organizationId, organizationId),
|
|
|
|
|
eq(agent.isArchived, false),
|
|
|
|
|
),
|
|
|
|
|
)) as unknown as Agent[];
|
2026-04-10 18:37:35 +02:00
|
|
|
}
|