Files
ToDoList/api/app/models/anniversary.py
祀梦 2979197b1c release: Elysia ToDo v1.0.0
鍏ㄦ爤涓汉淇℃伅绠$悊搴旂敤锛岄泦鎴愬緟鍔炰换鍔°€佷範鎯墦鍗°€佺邯蹇垫棩鎻愰啋銆佽祫浜ф€昏鍔熻兘銆

Made-with: Cursor
2026-03-14 22:21:26 +08:00

38 lines
1.4 KiB
Python

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")