from sqlalchemy import create_engine, Column, Integer, String, ForeignKey  
from sqlalchemy.ext.declarative import declarative_base  
from sqlalchemy.orm import relationship  
import os
from cppy.cp_util import db_filename


# 定义数据模型和数据库连接  
Base = declarative_base()  

# 获取当前文件所在的目录  
current_dir = os.path.dirname(os.path.abspath(__file__))  
  
# 构造数据库文件的完整路径  
db_file_path = os.path.join(current_dir, db_filename)    
DATABASE_URI = f"sqlite:///{db_file_path}"  
  
# 创建数据库引擎  
engine = create_engine(DATABASE_URI, echo=True)

  
class TextFile(Base):  
    __tablename__ = 'text_files'  
    id = Column(Integer, primary_key=True)  
    filepath = Column(String, unique=True)  
    content = Column(String)  
    words = relationship("WordFrequency", back_populates="textfile")  
  
class WordFrequency(Base):  
    __tablename__ = 'word_frequencies'  
    id = Column(Integer, primary_key=True)  
    word = Column(String)  
    frequency = Column(Integer)  
    textfile_id = Column(Integer, ForeignKey('text_files.id'))  
    textfile = relationship("TextFile", back_populates="words")  


if __name__ == '__main__':
    # 检查数据库文件是否存在    
    if os.path.exists(db_file_path):          
        os.remove(db_file_path)          

    Base.metadata.create_all(engine)      