from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, Table from sqlalchemy.orm import relationship from app import db user_skill_table = Table("user_skill", db.Model.metadata, Column("user_id", Integer, ForeignKey("user.id")), Column("skill_id", Integer, ForeignKey("skill.id"))) class User(db.Model): __tablename__ = "user" id = Column(Integer, primary_key=True) nickname = Column(String(25), unique=True, nullable=False) pronouns = Column(String(25), default="") volunteerwork = Column(String(4000), default="") freetext = Column(String(4000), default="") relationship("Address", uselist=False, back_populates="user") skills = relationship("Skill", secondary=user_skill_table, back_populates="users") class Address(db.Model): __tablename__ = "address" id = Column(Integer, primary_key=True) street = Column(String(25), default="") house_number = Column(String(10), default="") additional = Column(String(25), default="") postcode = Column(String(10), default="") city = Column(String(25), default="") country = Column(String(25), default="") user_id = Column(Integer, ForeignKey("user.id")) user = relationship("User", back_populates="address") class Skill(db.Model): __tablename__ = "skill" id = Column(Integer, primary_key=True) name = Column(String(25), unique=True, nullable=False) users = relationship("User", secondary=user_skill_table, back_populates="skills") class Language(db.Model): __tablename__ = "language" id = Column(Integer, primary_key=True) name = Column(String(25), nullable=False)