from datetime import datetime
from app.extensions import db


class Plan(db.Model):
    __tablename__ = "plans"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), unique=True, nullable=False)
    display_name = db.Column(db.String(100), nullable=False)
    reports_per_month = db.Column(db.Integer, nullable=False)
    price_monthly = db.Column(db.Numeric(10, 2), default=0)
    stripe_price_id = db.Column(db.String(255), nullable=True)
    can_export_pdf = db.Column(db.Boolean, default=False)
    has_api_access = db.Column(db.Boolean, default=False)
    video_provider = db.Column(db.String(20), default="sora")  # sora, veo, none

    subscriptions = db.relationship("Subscription", backref="plan", lazy="dynamic")


class Subscription(db.Model):
    __tablename__ = "subscriptions"

    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False, unique=True)
    plan_id = db.Column(db.Integer, db.ForeignKey("plans.id"), nullable=False)
    stripe_subscription_id = db.Column(db.String(255), nullable=True)
    stripe_customer_id = db.Column(db.String(255), nullable=True)
    status = db.Column(db.String(50), default="active")
    current_period_end = db.Column(db.DateTime, nullable=True)
    created_at = db.Column(db.DateTime, default=datetime.utcnow)
