c9d8e7f6a5b4_add_enricher_templates_table.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. """add enricher_templates table
  2. Revision ID: a1b2c3d4e5f6
  3. Revises: 8173aba964e7
  4. Create Date: 2025-01-31
  5. """
  6. from typing import Sequence, Union
  7. import sqlalchemy as sa
  8. from sqlalchemy.dialects import postgresql
  9. from alembic import op
  10. # revision identifiers, used by Alembic.
  11. revision: str = "c9d8e7f6a5b4"
  12. down_revision: Union[str, None] = "a1b2c3d4e5f6"
  13. branch_labels: Union[str, Sequence[str], None] = None
  14. depends_on: Union[str, Sequence[str], None] = None
  15. def upgrade() -> None:
  16. """Upgrade schema."""
  17. op.create_table(
  18. "enricher_templates",
  19. sa.Column("id", sa.UUID(), nullable=False),
  20. sa.Column("name", sa.Text(), nullable=False),
  21. sa.Column("category", sa.Text(), nullable=False),
  22. sa.Column("version", sa.Float(), nullable=False, server_default="1.0"),
  23. sa.Column("content", postgresql.JSONB(astext_type=sa.Text()), nullable=False),
  24. sa.Column("is_public", sa.Boolean(), nullable=False, server_default="false"),
  25. sa.Column("owner_id", sa.UUID(), nullable=False),
  26. sa.Column(
  27. "created_at",
  28. sa.DateTime(timezone=True),
  29. server_default=sa.text("now()"),
  30. nullable=True,
  31. ),
  32. sa.Column(
  33. "updated_at",
  34. sa.DateTime(timezone=True),
  35. server_default=sa.text("now()"),
  36. nullable=True,
  37. ),
  38. sa.ForeignKeyConstraint(
  39. ["owner_id"], ["profiles.id"], onupdate="CASCADE", ondelete="CASCADE"
  40. ),
  41. sa.PrimaryKeyConstraint("id"),
  42. )
  43. op.create_index(
  44. "idx_enricher_templates_owner_id",
  45. "enricher_templates",
  46. ["owner_id"],
  47. unique=False,
  48. )
  49. op.create_index(
  50. "idx_enricher_templates_name", "enricher_templates", ["name"], unique=False
  51. )
  52. op.create_index(
  53. "idx_enricher_templates_category",
  54. "enricher_templates",
  55. ["category"],
  56. unique=False,
  57. )
  58. op.create_index(
  59. "idx_enricher_templates_is_public",
  60. "enricher_templates",
  61. ["is_public"],
  62. unique=False,
  63. )
  64. def downgrade() -> None:
  65. """Downgrade schema."""
  66. op.drop_index("idx_enricher_templates_is_public", table_name="enricher_templates")
  67. op.drop_index("idx_enricher_templates_category", table_name="enricher_templates")
  68. op.drop_index("idx_enricher_templates_name", table_name="enricher_templates")
  69. op.drop_index("idx_enricher_templates_owner_id", table_name="enricher_templates")
  70. op.drop_table("enricher_templates")