26 lines
1005 B
Python
26 lines
1005 B
Python
from app.extensions import db
|
|
from datetime import datetime
|
|
|
|
|
|
class Budget(db.Model):
|
|
__tablename__ = 'budgets'
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
category_id = db.Column(db.Integer, db.ForeignKey('categories.id'), nullable=False)
|
|
month = db.Column(db.String(7), nullable=False, index=True) # YYYY-MM
|
|
limit_amount = db.Column(db.Numeric(15, 2), nullable=False)
|
|
rollover_enabled = db.Column(db.Boolean, default=False)
|
|
rollover_amount = db.Column(db.Numeric(15, 2), default=0.00)
|
|
alert_sent_80 = db.Column(db.Boolean, default=False, nullable=False)
|
|
alert_sent_100 = db.Column(db.Boolean, default=False, nullable=False)
|
|
created_at = db.Column(db.DateTime, default=datetime.utcnow)
|
|
|
|
category = db.relationship('Category')
|
|
|
|
__table_args__ = (
|
|
db.UniqueConstraint('category_id', 'month', name='uq_budget_category_month'),
|
|
)
|
|
|
|
def __repr__(self):
|
|
return f'<Budget {self.month} cat={self.category_id} limit={self.limit_amount}>'
|