from dostadmin import db
from dostadmin.mixins import TimestampMixin
from flask_sqlalchemy.query import Query as BaseQuery


class MonthlyProjection(TimestampMixin, db.Model):
    __tablename__ = "monthly_projections"

    id = db.Column(db.Integer, primary_key=True)
    projection_type = db.Column(db.String(100), nullable=False)
    state = db.Column(db.String(100), nullable=False)
    district = db.Column(db.String(100), nullable=False)
    block = db.Column(db.String(100), nullable=False)
    month_year = db.Column(db.String(20), nullable=False)
    projected_target = db.Column(db.Integer, nullable=False)
    created_by = db.Column(db.String(100), nullable=False)

    __table_args__ = (
        db.UniqueConstraint(
            "projection_type",
            "state",
            "district",
            "block",
            "month_year",
            name="uq_projection_geo_month",
        ),
    )
