mirror of
https://github.com/henry4682/linebot_finance.git
synced 2026-05-16 04:41:52 +00:00
59 lines
1.9 KiB
Python
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) |