mirror of
https://github.com/RichieCahill/dotfiles.git
synced 2026-04-17 13:08:19 -04:00
adding LegislatorSocialMedia
This commit is contained in:
@@ -0,0 +1,58 @@
|
|||||||
|
"""adding LegislatorSocialMedia.
|
||||||
|
|
||||||
|
Revision ID: 5cd7eee3549d
|
||||||
|
Revises: 83bfc8af92d8
|
||||||
|
Create Date: 2026-03-29 11:53:44.224799
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
|
import sqlalchemy as sa
|
||||||
|
from alembic import op
|
||||||
|
|
||||||
|
from python.orm import DataScienceDevBase
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from collections.abc import Sequence
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision: str = "5cd7eee3549d"
|
||||||
|
down_revision: str | None = "83bfc8af92d8"
|
||||||
|
branch_labels: str | Sequence[str] | None = None
|
||||||
|
depends_on: str | Sequence[str] | None = None
|
||||||
|
|
||||||
|
schema = DataScienceDevBase.schema_name
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade() -> None:
|
||||||
|
"""Upgrade."""
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.create_table(
|
||||||
|
"legislator_social_media",
|
||||||
|
sa.Column("legislator_id", sa.Integer(), nullable=False),
|
||||||
|
sa.Column("platform", sa.String(), nullable=False),
|
||||||
|
sa.Column("account_name", sa.String(), nullable=False),
|
||||||
|
sa.Column("url", sa.String(), nullable=True),
|
||||||
|
sa.Column("source", sa.String(), nullable=False),
|
||||||
|
sa.Column("id", sa.Integer(), nullable=False),
|
||||||
|
sa.Column("created", sa.DateTime(timezone=True), server_default=sa.text("now()"), nullable=False),
|
||||||
|
sa.Column("updated", sa.DateTime(timezone=True), server_default=sa.text("now()"), nullable=False),
|
||||||
|
sa.ForeignKeyConstraint(
|
||||||
|
["legislator_id"],
|
||||||
|
[f"{schema}.legislator.id"],
|
||||||
|
name=op.f("fk_legislator_social_media_legislator_id_legislator"),
|
||||||
|
),
|
||||||
|
sa.PrimaryKeyConstraint("id", name=op.f("pk_legislator_social_media")),
|
||||||
|
schema=schema,
|
||||||
|
)
|
||||||
|
# ### end Alembic commands ###
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade() -> None:
|
||||||
|
"""Downgrade."""
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.drop_table("legislator_social_media", schema=schema)
|
||||||
|
# ### end Alembic commands ###
|
||||||
@@ -1,13 +1,14 @@
|
|||||||
"""init."""
|
"""init."""
|
||||||
|
|
||||||
from python.orm.data_science_dev.congress.bill import Bill, BillText
|
from python.orm.data_science_dev.congress.bill import Bill, BillText
|
||||||
from python.orm.data_science_dev.congress.legislator import Legislator
|
from python.orm.data_science_dev.congress.legislator import Legislator, LegislatorSocialMedia
|
||||||
from python.orm.data_science_dev.congress.vote import Vote, VoteRecord
|
from python.orm.data_science_dev.congress.vote import Vote, VoteRecord
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
"Bill",
|
"Bill",
|
||||||
"BillText",
|
"BillText",
|
||||||
"Legislator",
|
"Legislator",
|
||||||
|
"LegislatorSocialMedia",
|
||||||
"Vote",
|
"Vote",
|
||||||
"VoteRecord",
|
"VoteRecord",
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from __future__ import annotations
|
|||||||
from datetime import date
|
from datetime import date
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from sqlalchemy import Text
|
from sqlalchemy import ForeignKey, Text
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||||
|
|
||||||
from python.orm.data_science_dev.base import DataScienceDevTableBase
|
from python.orm.data_science_dev.base import DataScienceDevTableBase
|
||||||
@@ -40,8 +40,27 @@ class Legislator(DataScienceDevTableBase):
|
|||||||
current_district: Mapped[int | None]
|
current_district: Mapped[int | None]
|
||||||
current_chamber: Mapped[str | None]
|
current_chamber: Mapped[str | None]
|
||||||
|
|
||||||
|
social_media_accounts: Mapped[list[LegislatorSocialMedia]] = relationship(
|
||||||
|
"LegislatorSocialMedia",
|
||||||
|
back_populates="legislator",
|
||||||
|
cascade="all, delete-orphan",
|
||||||
|
)
|
||||||
vote_records: Mapped[list[VoteRecord]] = relationship(
|
vote_records: Mapped[list[VoteRecord]] = relationship(
|
||||||
"VoteRecord",
|
"VoteRecord",
|
||||||
back_populates="legislator",
|
back_populates="legislator",
|
||||||
cascade="all, delete-orphan",
|
cascade="all, delete-orphan",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class LegislatorSocialMedia(DataScienceDevTableBase):
|
||||||
|
"""Social media account linked to a legislator."""
|
||||||
|
|
||||||
|
__tablename__ = "legislator_social_media"
|
||||||
|
|
||||||
|
legislator_id: Mapped[int] = mapped_column(ForeignKey("main.legislator.id"))
|
||||||
|
platform: Mapped[str]
|
||||||
|
account_name: Mapped[str]
|
||||||
|
url: Mapped[str | None]
|
||||||
|
source: Mapped[str]
|
||||||
|
|
||||||
|
legislator: Mapped[Legislator] = relationship(back_populates="social_media_accounts")
|
||||||
|
|||||||
Reference in New Issue
Block a user