|
|
from datetime import datetime
|
|
|
from app import db
|
|
|
|
|
|
class Account(db.Model):
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
|
name = db.Column(db.String(64), index=True, unique=True)
|
|
|
account_type = db.Column(db.String(64))
|
|
|
balance = db.Column(db.Float, default=0.0)
|
|
|
|
|
|
def __repr__(self):
|
|
|
return f'<Account {self.name}>'
|
|
|
|
|
|
class Transaction(db.Model):
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
|
amount = db.Column(db.Float)
|
|
|
type = db.Column(db.String(64)) # 'transfer', 'expense', 'income'
|
|
|
date = db.Column(db.DateTime, default=datetime.utcnow)
|
|
|
source_account_id = db.Column(db.Integer, db.ForeignKey('account.id'))
|
|
|
destination_account_id = db.Column(db.Integer, db.ForeignKey('account.id'))
|
|
|
source_account = db.relationship('Account', foreign_keys=[source_account_id], backref=db.backref('source_transactions', lazy=True))
|
|
|
destination_account = db.relationship('Account', foreign_keys=[destination_account_id], backref=db.backref('destination_transactions', lazy=True))
|
|
|
concept = db.Column(db.String(128))
|
|
|
|
|
|
def __repr__(self):
|
|
|
return f'<Transaction {self.type} {self.amount}>'
|