This commit is contained in:
Hossein 2025-09-25 02:19:42 +03:30
parent 898705ed51
commit ba0c636ffc

View File

@ -3,7 +3,7 @@ import os
import uuid import uuid
from sqlalchemy import ( from sqlalchemy import (
create_engine, Column, Integer, String, Float, DateTime, Boolean, Text, create_engine, Column, Integer, String, Float, DateTime, Boolean, Text,
ForeignKey, UniqueConstraint, Index ForeignKey
) )
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, relationship from sqlalchemy.orm import sessionmaker, relationship
@ -52,15 +52,10 @@ class InstaCursor(Base):
__tablename__ = "insta_cursors" __tablename__ = "insta_cursors"
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)
username = Column(String(150), nullable=False, unique=True) username = Column(String(150), nullable=False, unique=True) # unique → implicit unique index
next_max_id = Column(String(255), nullable=True) next_max_id = Column(String(255), nullable=True)
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
__table_args__ = (
UniqueConstraint("username", name="uq_insta_cursor_username"),
Index("ix_insta_cursors_username", "username"),
)
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Instagram Account # Instagram Account
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
@ -68,8 +63,8 @@ class InstagramAccount(Base):
__tablename__ = "instagram_accounts" __tablename__ = "instagram_accounts"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
seller_id = Column(UUID(as_uuid=True), nullable=False) seller_id = Column(UUID(as_uuid=True), nullable=False, index=True) # index for lookups by seller
username = Column(String(100), nullable=False, unique=True, index=True) username = Column(String(100), nullable=False, unique=True) # unique → implicit unique index
is_active = Column(Boolean, default=True) is_active = Column(Boolean, default=True)
last_synced = Column(DateTime(timezone=True), nullable=True) last_synced = Column(DateTime(timezone=True), nullable=True)
@ -80,12 +75,6 @@ class InstagramAccount(Base):
passive_deletes=True, passive_deletes=True,
) )
__table_args__ = (
UniqueConstraint("username", name="uq_instagram_accounts_username"),
Index("ix_instagram_accounts_username", "username"),
Index("ix_instagram_accounts_seller_id", "seller_id"),
)
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Instagram Post # Instagram Post
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
@ -99,8 +88,8 @@ class InstagramPost(Base):
nullable=False, nullable=False,
index=True, index=True,
) )
ig_post_id = Column(String(100), nullable=False, unique=True, index=True) ig_post_id = Column(String(100), nullable=False, unique=True) # unique → implicit unique index
media_type = Column(String(10), nullable=False) # 'image', 'video', 'carousel' media_type = Column(String(10), nullable=False, index=True) # 'image', 'video', 'carousel'
caption = Column(Text, nullable=True) caption = Column(Text, nullable=True)
thumbnail_url = Column(Text, nullable=True) thumbnail_url = Column(Text, nullable=True)
@ -114,12 +103,6 @@ class InstagramPost(Base):
account = relationship("InstagramAccount", back_populates="posts") account = relationship("InstagramAccount", back_populates="posts")
__table_args__ = (
UniqueConstraint("ig_post_id", name="uq_instagram_posts_ig_post_id"),
Index("ix_instagram_posts_created_at", "created_at"),
Index("ix_instagram_posts_media_type", "media_type"),
)
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Session dependency # Session dependency
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------