| from sqlalchemy import Column, Integer, String, Float, DateTime, ForeignKey |
| from sqlalchemy.orm import declarative_base, relationship |
| from datetime import datetime |
|
|
| Base = declarative_base() |
|
|
| class Campaign(Base): |
| __tablename__ = "campaigns" |
|
|
| id = Column(Integer, primary_key=True) |
| google_campaign_id = Column(String, unique=True) |
| name = Column(String) |
|
|
| budget = Column(Float) |
| spend = Column(Float) |
| clicks = Column(Integer) |
| impressions = Column(Integer) |
|
|
| ctr = Column(Float) |
| leads = Column(Integer) |
| cpl = Column(Float) |
|
|
| last_synced = Column(DateTime, default=datetime.utcnow) |
|
|
| recommendations = relationship("Recommendation", back_populates="campaign") |
|
|
| class Recommendation(Base): |
| __tablename__ = "recommendations" |
|
|
| id = Column(Integer, primary_key=True) |
|
|
| campaign_id = Column(Integer, ForeignKey("campaigns.id")) |
|
|
| recommendation_type = Column(String) |
| action = Column(String) |
| reason = Column(String) |
|
|
| status = Column(String, default="Pending") |
| created_at = Column(DateTime, default=datetime.utcnow) |
|
|
| campaign = relationship("Campaign", back_populates="recommendations") |