from sqlalchemy import Column, Integer, String, JSON, Text, ForeignKey, DateTime, Boolean, CHAR from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() #角色表定义 class Character(Base): __tablename__ = 'character' id = Column(Integer, primary_key=True, autoincrement=True) voice_id = Column(Integer, nullable=False) avatar_id = Column(String(36), nullable=False) background_ids = Column(String(255), nullable=False) name = Column(String(36), nullable=False) wakeup_words = Column(String(255), nullable=False) world_scenario = Column(Text, nullable=False) description = Column(Text, nullable=False) emojis = Column(JSON, nullable=False) dialogues = Column(Text, nullable=False) def __repr__(self): return f"" #用户表定义 class User(Base): __tablename__ = 'user' id = Column(Integer, primary_key=True, autoincrement=True) created_at = Column(DateTime, nullable=True) updated_at = Column(DateTime, nullable=True) deleted_at = Column(DateTime, nullable=True) open_id = Column(String(255), nullable=True) username = Column(String(64), nullable=True) avatar_id = Column(String(36), nullable=True) tags = Column(JSON) persona = Column(JSON) def __repr__(self): return f"" #硬件表定义 class Hardware(Base): __tablename__ = 'hardware' id = Column(Integer, primary_key=True, autoincrement=True) user_id = Column(Integer, ForeignKey('user.id')) mac = Column(String(17)) firmware = Column(String(16)) model = Column(String(36)) def __repr__(self): return f"" #用户角色表定义 class UserCharacter(Base): __tablename__ = 'user_character' id = Column(Integer, primary_key=True, autoincrement=True) user_id = Column(Integer, ForeignKey('user.id')) character_id = Column(Integer, ForeignKey('character.id')) persona = Column(JSON) def __repr__(self): return f"" #Session表定义 class Session(Base): __tablename__ = 'session' id = Column(CHAR(36), primary_key=True) user_character_id = Column(Integer, ForeignKey('user_character.id')) content = Column(Text) last_activity = Column(DateTime()) is_permanent = Column(Boolean) def __repr__(self): return f""