20260727_03_agent_document_injection.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. """create persisted Agent document injection table
  2. Revision ID: 20260727_03
  3. Revises: 20260727_02
  4. Create Date: 2026-07-27
  5. """
  6. from __future__ import annotations
  7. from collections.abc import Sequence
  8. import sqlalchemy as sa
  9. from alembic import op
  10. from sqlalchemy.dialects import mysql
  11. revision: str = "20260727_03"
  12. down_revision: str | None = "20260727_02"
  13. branch_labels: str | Sequence[str] | None = None
  14. depends_on: str | Sequence[str] | None = None
  15. def upgrade() -> None:
  16. op.create_table(
  17. "agent_document_injection",
  18. sa.Column("id", sa.BigInteger(), autoincrement=True, nullable=False),
  19. sa.Column(
  20. "agent_name",
  21. sa.String(length=128),
  22. nullable=False,
  23. comment="Agent name",
  24. ),
  25. sa.Column(
  26. "content",
  27. sa.Text().with_variant(mysql.LONGTEXT(), "mysql"),
  28. nullable=False,
  29. comment="Document content injected after the base system prompt",
  30. ),
  31. sa.Column(
  32. "enabled",
  33. sa.Integer(),
  34. server_default=sa.text("1"),
  35. nullable=False,
  36. comment="Whether the document injection is active",
  37. ),
  38. sa.Column(
  39. "create_time",
  40. sa.DateTime(),
  41. server_default=sa.func.now(),
  42. nullable=False,
  43. ),
  44. sa.Column(
  45. "update_time",
  46. sa.DateTime(),
  47. server_default=sa.func.now(),
  48. nullable=False,
  49. ),
  50. sa.PrimaryKeyConstraint("id"),
  51. sa.UniqueConstraint(
  52. "agent_name",
  53. name="uk_agent_document_injection_agent_name",
  54. ),
  55. mysql_charset="utf8mb4",
  56. )
  57. op.create_index(
  58. "ix_agent_document_injection_agent_name",
  59. "agent_document_injection",
  60. ["agent_name"],
  61. )
  62. def downgrade() -> None:
  63. op.drop_index(
  64. "ix_agent_document_injection_agent_name",
  65. table_name="agent_document_injection",
  66. )
  67. op.drop_table("agent_document_injection")