58 lines
1.7 KiB
Python
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")
|