from peewee import * from datetime import datetime import os from dotenv import load_dotenv load_dotenv() # 加载 .env 文件中的环境变量 database = SqliteDatabase(os.getenv('DATABASE_PATH', 'habits.db')) class BaseModel(Model): class Meta: database = database class Habit(BaseModel): name = CharField() description = TextField(null=True) periodicity = CharField(default='daily') # daily, weekly, monthly reminder_time = TimeField(null=True) icon = CharField(null=True) color = CharField(default='#000000') created_at = DateTimeField(default=datetime.now) class Meta: table_name = 'habits' class CheckIn(BaseModel): habit = ForeignKeyField(Habit, backref='checkins', on_delete='CASCADE') date = DateField() note = TextField(null=True) created_at = DateTimeField(default=datetime.now) class Meta: table_name = 'checkins' indexes = ( # Ensure no duplicate check-ins for the same habit on the same day (('habit', 'date'), True), ) def create_tables(): with database: database.create_tables([Habit, CheckIn])