mirror of
https://github.com/henry4682/linebot_finance.git
synced 2026-05-16 04:41:52 +00:00
feat: linbot
restruct the project
This commit is contained in:
59
app/DB/Models.py
Normal file
59
app/DB/Models.py
Normal file
@@ -0,0 +1,59 @@
|
||||
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)
|
||||
13
app/DB/Session.py
Normal file
13
app/DB/Session.py
Normal file
@@ -0,0 +1,13 @@
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from app.config import DATABASE_URL
|
||||
|
||||
engine = create_engine(DATABASE_URL)
|
||||
SessionLocal = sessionmaker(bind=engine)
|
||||
|
||||
def get_db():
|
||||
db = SessionLocal()
|
||||
try:
|
||||
yield db
|
||||
finally:
|
||||
db.close()
|
||||
Reference in New Issue
Block a user