Files
finanz-cockpit/src/models_db.py
T

58 lines
1.7 KiB
Python

#!/bin/python
from sqlalchemy import (
Column,
Date,
ForeignKey,
Integer,
Numeric,
String,
UniqueConstraint,
)
from sqlalchemy.orm import DeclarativeBase, relationship
class BaseModelDb(DeclarativeBase):
pass
class CategoryDb(BaseModelDb):
__tablename__ = "category"
__table_args__ = (
UniqueConstraint("name", "parent_id", name="uq_category_name_parent"),
)
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String, nullable=False)
parent_id = Column(Integer, ForeignKey("category.id"), nullable=True)
# Relationships
parent = relationship(
"CategoryDb", remote_side="CategoryDb.id", back_populates="children"
)
children = relationship("CategoryDb", back_populates="parent")
UniqueConstraint("name", "parent_id", name="uq_category_name_parent")
class B4wDb(BaseModelDb):
__tablename__ = "import_b4w"
id = Column(Integer, primary_key=True, autoincrement=True)
id_b4w = Column(Integer, nullable=False, unique=True)
account_iban = Column(String, nullable=False)
account_currency = Column(String(3), nullable=False)
date_valid = Column(Date, nullable=False)
date_book = Column(Date, nullable=True)
amount = Column(Numeric(12, 2), nullable=False)
amount_currency = Column(String(3), nullable=False)
sign = Column(Integer, nullable=False)
reference = Column(String, nullable=True)
other_name = Column(String, nullable=True)
other_iban = Column(String, nullable=True)
category_id = Column(Integer, ForeignKey("category.id"), nullable=True)
notes = Column(String, nullable=True)
# relationship
category = relationship("CategoryDb")