class RepliesOnBoard(Base): __tablename__ = 'RepliesOnBoard' boardReplyIndex = Column(INTEGER(unsigned=True), primary_key=True, autoincrement=True, nullable=False) articleIndex = Column(INTEGER(unsigned=True), ForeignKey(ArticlesOnBoard.articleIndex, onupdate='CASCADE', ondelete='CASCADE'), nullable=False) boardReplierIdIndex = Column(INTEGER(unsigned=True), ForeignKey(Members.memberIdIndex, onupdate='CASCADE', ondelete='CASCADE'), nullable=False) boardReplyContent = Column(TEXT, nullable=False) sumOfLikeCount = Column(INTEGER(unsigned=True), default=0, nullable=False) boardReplierIp = Column(VARCHAR(20), nullable=False) boardRepliedDate = Column(DATETIME, nullable=False) isDeleted = Column(ENUM(ENUMResources().const.TRUE, ENUMResources().const.FALSE), default=ENUMResources().const.FALSE, nullable=False)
class Problems(Base) : __tablename__ = 'Problems' problemIndex = Column(INTEGER(unsigned = True), primary_key = True, autoincrement = True, nullable = False) problemName = Column(VARCHAR(255), nullable = False, unique = True) problemDifficulty = Column(ENUM(ENUMResources().const.BRONZE, ENUMResources().const.SILVER, ENUMResources().const.GOLD), default = ENUMResources().const.BRONZE, nullable = False) solutionCheckType = Column(ENUM(ENUMResources().const.SOLUTION, ENUMResources().const.CHECKER), default = ENUMResources().const.CHECKER, nullable = False) numberOfTestCase = Column(INTEGER(unsigned = True), default = 0, nullable = False) limitedTime = Column(INTEGER(unsigned = True), default = 3000, nullable = False) #ms limitedMemory = Column(INTEGER(unsigned = True), default = 1024, nullable = False) #MB problemPath = Column(TEXT, nullable = True) isDeleted = Column(ENUM (ENUMResources().const.TRUE, ENUMResources().const.FALSE), default = ENUMResources().const.FALSE, nullable = False)
class ArticlesOnBoard(Base): __tablename__ = 'ArticlesOnBoard' articleIndex = Column(INTEGER(unsigned=True), primary_key=True, autoincrement=True, nullable=False) articleType = Column(ENUM(ENUMResources().const.NOTICE, ENUMResources().const.QUESTION, ENUMResources().const.NORMAL), default=ENUMResources().const.NORMAL, nullable=False) # checker for notice writerIdIndex = Column(INTEGER(unsigned=True), ForeignKey(Members.memberIdIndex, onupdate='CASCADE', ondelete='CASCADE'), nullable=False) problemIndex = Column(INTEGER(unsigned=True), ForeignKey(Problems.problemIndex, onupdate='CASCADE', ondelete='CASCADE'), nullable=True) title = Column(VARCHAR(1024), nullable=False) content = Column(TEXT, nullable=False) # contents of article viewCount = Column(INTEGER(unsigned=True), default=0, nullable=False) replyCount = Column(INTEGER(unsigned=True), default=0, nullable=False) sumOfLikeCount = Column(INTEGER(unsigned=True), default=0, nullable=False) updateIp = Column(VARCHAR(20), nullable=False) updateDate = Column(DATETIME, nullable=False) isDeleted = Column(ENUM(ENUMResources().const.TRUE, ENUMResources().const.FALSE), default=ENUMResources().const.FALSE, nullable=False)
class Submissions(Base): __tablename__ = 'Submissions' submissionIndex = Column(INTEGER(unsigned=True), ForeignKey(DataOfSubmissionBoard.submissionIndex, onupdate='CASCADE', ondelete='NO ACTION'), primary_key=True, autoincrement=False, nullable=False) submissionCount = Column(INTEGER(unsigned=True), primary_key=True, autoincrement=False, default=0, nullable=False) solutionCheckCount = Column(INTEGER(unsigned=True), default=0, nullable=False) status = Column(ENUM(ENUMResources().const.NEVER_SUBMITTED, ENUMResources().const.JUDGING, ENUMResources().const.SOLVED, ENUMResources().const.TIME_OVER, ENUMResources().const.MEMORY_OVERFLOW, ENUMResources().const.WRONG_ANSWER, ENUMResources().const.COMPILE_ERROR, ENUMResources().const.RUNTIME_ERROR, ENUMResources().const.SERVER_ERROR), default=ENUMResources().const.NEVER_SUBMITTED, nullable=False) score = Column(INTEGER(unsigned=True), default=0, nullable=False) codeSubmissionDate = Column(DATETIME, nullable=False) compileErrorMessage = Column(TEXT, default=None, nullable=True) wrongTestCaseNumber = Column(INTEGER(unsigned=True), default=None, nullable=True) runTime = Column(INTEGER(unsigned=True), default=0, nullable=False) usedMemory = Column(INTEGER(unsigned=True), default=0, nullable=False) usedLanguageIndex = Column(INTEGER(unsigned=True), ForeignKey(Languages.languageIndex, onupdate='CASCADE', ondelete='NO ACTION'), nullable=False) sumOfSubmittedFileSize = Column(INTEGER(unsigned=True), nullable=False) # Byte
class LikesOnSubmission(Base) : __tablename__ = 'LikesOnSubmission' submissionIndex = Column(INTEGER(unsigned = True), ForeignKey (DataOfSubmissionBoard.submissionIndex, onupdate = 'CASCADE', ondelete = 'CASCADE'), primary_key = True, autoincrement = False, nullable = False) codeLikerIdIndex = Column(INTEGER(unsigned = True), ForeignKey(Members.memberIdIndex, onupdate = 'CASCADE', ondelete = 'CASCADE'), primary_key = True, autoincrement = False, nullable = False) isLikeCancelled = Column(ENUM(ENUMResources().const.TRUE, ENUMResources().const.FALSE), default = ENUMResources().const.FALSE, nullable = False)
class LikesOnBoard(Base) : __tablename__ = 'LikesOnBoard' articleIndex = Column(INTEGER(unsigned = True), ForeignKey(ArticlesOnBoard.articleIndex, onupdate = 'CASCADE', ondelete = 'CASCADE'), primary_key = True, autoincrement = False, nullable = False) boardLikerIdIndex = Column(INTEGER(unsigned = True), ForeignKey(Members.memberIdIndex, onupdate = 'CASCADE', ondelete = 'CASCADE'), primary_key = True, autoincrement = False, nullable = False) isLikeCancelled = Column(ENUM (ENUMResources().const.TRUE, ENUMResources().const.FALSE), default = ENUMResources().const.FALSE, nullable =False)
class Members (Base) : __tablename__ ='Members' memberIdIndex = Column(INTEGER(unsigned = True), primary_key =True, autoincrement = True, nullable = False) memberId = Column(VARCHAR(255), nullable = False, unique = True) password = Column(VARCHAR(1024), nullable =False) memberName = Column(VARCHAR(1024), nullable =False) contactNumber = Column(VARCHAR(20), nullable =True) emailAddress = Column(VARCHAR(1024), nullable =True) detailInformation = Column(VARCHAR(1024), nullable = True) authority = Column(SET(SETResources().const.ADMINISTRATOR, SETResources().const.USER), default = SETResources().const.USER, nullable = False) limitedUseDate = Column(DATETIME, default = None, nullable = True) signedInDate = Column(DATETIME, nullable = False) lastAccessDate = Column(DATETIME, nullable =True) comment = Column(TEXT, nullable = True) isDeleted = Column(ENUM(ENUMResources().const.TRUE, ENUMResources().const.FALSE), default = ENUMResources().const.FALSE, nullable = False)