Files
linebot_finance/app/DB/Models.py
henry4682 c0edc06ab1 feat: linbot
restruct the project
2026-03-10 10:15:22 +08:00

59 lines
1.9 KiB
Python

from sqlalchemy import Column, String, Numeric, Date, DateTime, BigInteger
from sqlalchemy.orm import declarative_base
from datetime import datetime
Base = declarative_base()
class User(Base):
__tablename__ = "users"
id = Column(BigInteger, primary_key=True)
name = Column(String)
email = Column(String, unique=True)
created_at = Column(DateTime, default=datetime.now)
updated_at = Column(DateTime, default=datetime.now)
class LineUser(Base):
__tablename__ = "line_users"
id = Column(BigInteger, primary_key=True)
line_user_id = Column(String, unique=True)
user_id = Column(BigInteger)
created_at = Column(DateTime, default=datetime.now)
class Category(Base):
__tablename__ = "categories"
id = Column(BigInteger, primary_key=True)
user_id = Column(BigInteger)
parent_id = Column(BigInteger, nullable=True)
name = Column(String)
color = Column(String, default='#3B82F6')
icon = Column(String, nullable=True)
created_at = Column(DateTime, default=datetime.now)
updated_at = Column(DateTime, default=datetime.now)
class CategoryRule(Base):
__tablename__ = "category_rules"
id = Column(BigInteger, primary_key=True)
user_id = Column(BigInteger)
category_id = Column(BigInteger)
keyword = Column(String)
created_at = Column(DateTime, default=datetime.now)
updated_at = Column(DateTime, default=datetime.now)
class Expense(Base):
__tablename__ = "expenses"
id = Column(BigInteger, primary_key=True)
user_id = Column(BigInteger)
category_id = Column(BigInteger, nullable=True)
amount = Column(Numeric(10, 2))
note = Column(String, nullable=True)
invoice_number = Column(String, nullable=True)
seller_name = Column(String, nullable=True)
item_name = Column(String, nullable=True)
date = Column(Date)
created_at = Column(DateTime, default=datetime.now)
updated_at = Column(DateTime, default=datetime.now)