diff --git a/models.py b/models.py index 791b7ddccce4be5c409293df71b8a71cf53c121a..d51e7595abcf58572e82bf298955ce1676b37f9a 100644 --- a/models.py +++ b/models.py @@ -1,15 +1,42 @@ from flask import Flask from flask_sqlalchemy import SQLAlchemy -db = SQLAlchemy() +app = Flask(__name__) +app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db' +db = SQLAlchemy(app) -class Element(db.Model) +element_label = db.Table('Element_Label', db.Model.metadata, + db.Column('id_element', db.Integer, db.ForeignKey('element.id')), + db.Column('id_label', db.Integer, db.ForeignKey('label.id')) + ) + +class Element(db.Model): id = db.Column(db.INTEGER, primary_key=True) element_name = db.Column(db.String(50), unique=True, nullable=False) + labels = db.relationship( + "Label", + secondary=element_label, + back_populates="elements") -class Label(db.Model) +class Label(db.Model): id = db.Column(db.INTEGER, primary_key=True) label_name = db.Column(db.String(50), unique=True, nullable=False) father_id = db.Column(db.INTEGER, db.ForeignKey('label.id')) + children = db.relationship("Label", + backref=db.backref('parent', remote_side=[id]) + ) + aliases = db.relationship('Alias', back_populates='label') + elements = db.relationship( + "Element", + secondary=element_label, + back_populates="labels") + +class Alias(db.Model): + alias_name = db.Column(db.String(100), primary_key=True) + id_label = db.Column(db.INTEGER, db.ForeignKey('label.id'), nullable=False) + label = db.relationship('Label', back_populates='aliases') + + +