Performance improvements for local development: - Add indexes: Agents.Name, Conversations.Title, AgentExecutions.CompletedAt, ConversationMessages.CreatedAt - Remove redundant ConversationMessages index (covered by composite) - Add .Take() limit to SendMessage context query to prevent fetching excessive history - Downgrade Microsoft.Extensions.Http from 9.0.10 to 8.0.1 for .NET 8 compatibility All query handlers already had .AsNoTracking() for read operations. Impact: Faster search/filter operations even with 10-20 agents, prevents N+1 on long conversations. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
64 lines
2.0 KiB
C#
64 lines
2.0 KiB
C#
using Microsoft.EntityFrameworkCore.Migrations;
|
|
|
|
#nullable disable
|
|
|
|
namespace Codex.Dal.Migrations
|
|
{
|
|
/// <inheritdoc />
|
|
public partial class AddPerformanceIndexes : Migration
|
|
{
|
|
/// <inheritdoc />
|
|
protected override void Up(MigrationBuilder migrationBuilder)
|
|
{
|
|
migrationBuilder.DropIndex(
|
|
name: "IX_ConversationMessages_ConversationId_MessageIndex",
|
|
table: "ConversationMessages");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Conversations_Title",
|
|
table: "Conversations",
|
|
column: "Title");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_ConversationMessages_CreatedAt",
|
|
table: "ConversationMessages",
|
|
column: "CreatedAt");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Agents_Name",
|
|
table: "Agents",
|
|
column: "Name");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_AgentExecutions_CompletedAt",
|
|
table: "AgentExecutions",
|
|
column: "CompletedAt");
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
protected override void Down(MigrationBuilder migrationBuilder)
|
|
{
|
|
migrationBuilder.DropIndex(
|
|
name: "IX_Conversations_Title",
|
|
table: "Conversations");
|
|
|
|
migrationBuilder.DropIndex(
|
|
name: "IX_ConversationMessages_CreatedAt",
|
|
table: "ConversationMessages");
|
|
|
|
migrationBuilder.DropIndex(
|
|
name: "IX_Agents_Name",
|
|
table: "Agents");
|
|
|
|
migrationBuilder.DropIndex(
|
|
name: "IX_AgentExecutions_CompletedAt",
|
|
table: "AgentExecutions");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_ConversationMessages_ConversationId_MessageIndex",
|
|
table: "ConversationMessages",
|
|
columns: new[] { "ConversationId", "MessageIndex" });
|
|
}
|
|
}
|
|
}
|