Source code for cerebralcortex.core.data_manager.sql.orm_models

# Copyright (c) 2020, MD2K Center of Excellence
# - Nasir Ali <nasir.ali08@gmail.com>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

from datetime import datetime

from sqlalchemy import Column, String, Integer, Date, Boolean, JSON, Text, UniqueConstraint

from cerebralcortex.core.data_manager.sql import Base


[docs]class Stream(Base): __tablename__ = 'stream' row_id=Column('row_id',Integer, primary_key=True, autoincrement=True) name=Column('name', String(100)) version=Column('version', Integer) study_name = Column('study_name', String(100)) metadata_hash=Column('metadata_hash', String(100), unique=True, index=True) stream_metadata=Column('stream_metadata', JSON) creation_date = Column('creation_date', Date) __table_args__ = (UniqueConstraint('name','study_name', 'metadata_hash', name='unique_stream_study_key'),) def __init__(self, name, version, study_name, metadata_hash, stream_metadata): self.name = name self.version = version self.study_name = study_name self.metadata_hash = metadata_hash self.stream_metadata = stream_metadata self.creation_date = datetime.now() def __repr__(self): return "row_id={0}, name={1}, version={2}, metadata_hash={3}, stream_metadata={4}, creation_date={5} \n".format( self.row_id, self.name, self.version, self.metadata_hash, self.stream_metadata, self.creation_date )
[docs]class User(Base): __tablename__ = 'user' row_id=Column('row_id',Integer, primary_key=True, autoincrement=True) user_id = Column('user_id', String(100), unique=True, index=True) username=Column('username', String(100), unique=True, index=True) password=Column('password', String(100)) study_name=Column('study_name', String(100)) token = Column('token', Text) token_issued = Column('token_issued', Date) token_expiry = Column('token_expiry', Date) user_role = Column('user_role', String(56)) user_metadata=Column('user_metadata', JSON) user_settings = Column('user_settings', JSON) active = Column('active', Boolean) has_data = Column('has_data', Boolean) creation_date = Column('creation_date', Date) def __init__(self, user_id, username, password, study_name, token, token_issued, token_expiry, user_role="participant", user_metadata={}, user_settings={}, active=1): self.user_id = user_id self.username = username self.password = password self.study_name = study_name self.token = token self.token_issued = token_issued self.token_expiry = token_expiry self.user_role = user_role self.user_metadata = user_metadata self.user_settings = user_settings self.active = active self.creation_date = datetime.now() def __repr__(self): return "row_id={0}, user_id={1}, username={2}, password={3}, study_name={4}, token={5}, token_issued={6}, " \ "token_expiry={7}, user_role={8}, user_metadata={9}, user_settings={10}, active={11}, creation_date={12}".format( self.row_id, self.user_id, self.username, self.password, self.study_name, self.token, self.token_issued, self.token_expiry, self.user_role, self.user_metadata, self.user_settings, self.active, self.creation_date )