Created
August 20, 2015 04:31
-
-
Save ecthiender/0afe024aa7d18ad851a0 to your computer and use it in GitHub Desktop.
[SQLAlchemy Models] Entities in the Virtual Labs dataservice
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class IntegrationLevel(db.Model): | |
__tablename__ = 'integration_levels' | |
id = db.Column(db.Integer, primary_key=True) | |
level = db.Column(db.Integer, nullable=False) | |
labs = db.relationship('Lab', backref='integration_level') | |
class TypeOfLab(db.Model): | |
__tablename__ = 'type_of_labs' | |
id = db.Column(db.Integer, primary_key=True) | |
type = db.Column(db.String(64), nullable=False) | |
labs = db.relationship('Lab', backref='type_of_lab') | |
class HostingPlatform(db.Model): | |
__tablename__ = 'hosting_platforms' | |
id = db.Column(db.Integer, primary_key=True) | |
name = db.Column(db.String(32), nullable=False) | |
labs = db.relationship('Lab', backref='hosted_on') | |
simulations = db.relationship('Experiment', backref='simulation_on') | |
content = db.relationship('Experiment', backref='content_on') | |
class Institute(db.Model): | |
__tablename__ = 'institutes' | |
id = db.Column(db.Integer, primary_key=True) | |
name = db.Column(db.String(128), nullable=False) | |
pic = db.Column(db.String(128)) | |
iic = db.Column(db.String(128)) | |
labs = db.relationship('Lab', backref='institute') | |
developers = db.relationship('Developer', backref='institute') | |
class Discipline(db.Model): | |
__tablename__ = 'disciplines' | |
id = db.Column(db.Integer, primary_key=True) | |
name = db.Column(db.String(128), nullable=False) | |
dnc = db.Column(db.String(64)) | |
labs = db.relationship('Lab', backref='discipline') | |
# association table of developers and labs | |
developers_engaged = db.Table( | |
'developers_engaged', | |
db.Column('lab_id', db.Integer, db.ForeignKey('labs.id')), | |
db.Column('developer_id', db.Integer, db.ForeignKey('developers.id')) | |
) | |
# association table of technologies and labs | |
technologies_used_labs = db.Table( | |
'technologies_used_labs', | |
db.Column('lab_id', db.Integer, db.ForeignKey('labs.id')), | |
db.Column('tech_id', db.Integer, db.ForeignKey('technologies.id')) | |
) | |
# association table of technologies and experiments | |
technologies_used_expt = db.Table( | |
'technologies_used_expt', | |
db.Column('expt_id', db.Integer, db.ForeignKey('experiments.id')), | |
db.Column('tech_id', db.Integer, db.ForeignKey('technologies.id')) | |
) | |
class Lab(Entity): | |
__tablename__ = 'labs' | |
id = db.Column(db.Integer, primary_key=True) | |
name = db.Column(db.String(128), nullable=False) | |
mnemonic = db.Column(db.String(32), nullable=False) | |
slug = db.Column(db.String(128)) | |
institute_id = db.Column(db.Integer, db.ForeignKey('institutes.id')) | |
discipline_id = db.Column(db.Integer, db.ForeignKey('disciplines.id')) | |
integration_level_id = db.Column(db.ForeignKey('integration_levels.id')) | |
developers = db.relationship('Developer', secondary=developers_engaged, | |
backref='labs') | |
number_of_experiments = db.Column(db.Integer) | |
experiments = db.relationship('Experiment', backref='lab') | |
technologies = db.relationship('Technology', | |
secondary=technologies_used_labs, | |
backref='labs') | |
repo_url = db.Column(db.String(256)) | |
hosted_url = db.Column(db.String(256)) | |
hosted_on_id = db.Column(db.ForeignKey('hosting_platforms.id')) | |
type_of_lab_id = db.Column(db.ForeignKey('type_of_labs.id')) | |
remarks = db.Column(db.Text) | |
status = db.Column(db.String(32)) | |
is_web_2_compliant = db.Column(db.Boolean) | |
is_phase_2_lab = db.Column(db.Boolean) | |
class Developer(Entity): | |
__tablename__ = 'developers' | |
id = db.Column(db.Integer, primary_key=True) | |
email_id = db.Column(db.String(128)) | |
name = db.Column(db.String(64), nullable=False) | |
institute_id = db.Column(db.Integer, db.ForeignKey('institutes.id')) | |
class Technology(Entity): | |
__tablename__ = 'technologies' | |
id = db.Column(db.Integer, primary_key=True) | |
name = db.Column(db.String(64), nullable=False) | |
version = db.Column(db.String(32)) | |
foss = db.Column(db.Boolean) | |
class Experiment(Entity): | |
__tablename__ = 'experiments' | |
id = db.Column(db.Integer, primary_key=True) | |
# Our data set has really, really long experiment names and URLs!! | |
name = db.Column(db.String(256)) | |
lab_id = db.Column(db.Integer, db.ForeignKey('labs.id')) | |
content_url = db.Column(db.String(256)) | |
content_on_id = db.Column(db.ForeignKey('hosting_platforms.id')) | |
simulation_url = db.Column(db.String(256)) | |
simulation_on_id = db.Column(db.ForeignKey('hosting_platforms.id')) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment