release: Elysia ToDo v1.0.0
鍏ㄦ爤涓汉淇℃伅绠$悊搴旂敤锛岄泦鎴愬緟鍔炰换鍔°€佷範鎯墦鍗°€佺邯蹇垫棩鎻愰啋銆佽祫浜ф€昏鍔熻兘銆 Made-with: Cursor
This commit is contained in:
37
api/app/models/anniversary.py
Normal file
37
api/app/models/anniversary.py
Normal file
@@ -0,0 +1,37 @@
|
||||
from sqlalchemy import Column, Integer, String, Text, Boolean, DateTime, ForeignKey, Date
|
||||
from sqlalchemy.orm import relationship
|
||||
from app.database import Base
|
||||
from app.utils.datetime import utcnow
|
||||
|
||||
|
||||
class AnniversaryCategory(Base):
|
||||
"""纪念日分类模型"""
|
||||
__tablename__ = "anniversary_categories"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
name = Column(String(50), nullable=False)
|
||||
icon = Column(String(50), default="calendar")
|
||||
color = Column(String(20), default="#FFB7C5")
|
||||
sort_order = Column(Integer, default=0)
|
||||
|
||||
# 关联关系
|
||||
anniversaries = relationship("Anniversary", back_populates="category")
|
||||
|
||||
|
||||
class Anniversary(Base):
|
||||
"""纪念日模型"""
|
||||
__tablename__ = "anniversaries"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
title = Column(String(200), nullable=False)
|
||||
date = Column(Date, nullable=False) # 月-日,年份部分可选
|
||||
year = Column(Integer, nullable=True) # 年份,用于计算第 N 个周年
|
||||
category_id = Column(Integer, ForeignKey("anniversary_categories.id"), nullable=True)
|
||||
description = Column(Text, nullable=True)
|
||||
is_recurring = Column(Boolean, default=True)
|
||||
remind_days_before = Column(Integer, default=3)
|
||||
created_at = Column(DateTime, default=utcnow)
|
||||
updated_at = Column(DateTime, default=utcnow, onupdate=utcnow)
|
||||
|
||||
# 关联关系
|
||||
category = relationship("AnniversaryCategory", back_populates="anniversaries")
|
||||
Reference in New Issue
Block a user