class Pending_Member(db.Model): __tablename__ = "pending_members" id = db.Column(db.Integer, primary_key=True) userId = db.Column(db.Integer, db.ForeignKey("users.id", ondelete="CASCADE")) groupId = db.Column(db.Integer, db.ForeignKey("groups.id", ondelete="CASCADE")) message = db.Column(db.String(100)) type = db.Column(db.Enum('Request', 'Invite'))
class Budget(db.Model): __tablename__ = 'budgets' id = db.Column(db.Integer, primary_key=True) groupId = db.Column(db.Integer, db.ForeignKey("groups.id", ondelete="CASCADE")) userId = db.Column(db.Integer, db.ForeignKey("users.id", ondelete="CASCADE")) total = db.Column(db.Integer) def getBudget(id): return Budget.query.filter(Budget.userId == id).first()
class Expense(db.Model): __tablename__ = 'expenses' id = db.Column(db.Integer, primary_key=True) groupId = db.Column(db.Integer, db.ForeignKey("groups.id", ondelete="CASCADE")) userId = db.Column(db.Integer, db.ForeignKey("users.id", ondelete="CASCADE")) name = db.Column(db.String(30)) cost = db.Column(db.Integer) payments = db.Column(db.Integer) type = db.Column( db.Enum('Rental', 'Food/Drink', 'Transportation', 'Activity')) splits = db.Column(db.Integer) def getExpenses(groupId, userId): return Expense.query.filter(and_(Expense.groupId == groupId), (Expense.userId == userId)).all()
class User_Group(db.Model): __tablename__ = "users_groups" id = db.Column(db.Integer, primary_key=True) userId = db.Column(db.Integer, db.ForeignKey("users.id", ondelete="CASCADE")) groupId = db.Column(db.Integer, db.ForeignKey("groups.id", ondelete="CASCADE")) type = db.Column(db.Enum('Admin', 'Member')) def getUserGroups(userId): return User_Group.query.filter(User_Group.userId == userId).all() def getMembers(groupId): return User_Group.query.filter(User_Group.groupId == groupId).all() def getIndividualMember(userId, groupId): return User_Group.query.filter(and_(User_Group.groupId == groupId), (User_Group.userId == userId))
class Rest_Pin(db.Model): __tablename__ = "restPins" id = db.Column(db.Integer, primary_key=True) groupId = db.Column(db.Integer, db.ForeignKey("groups.id", ondelete="CASCADE")) restName = db.Column(db.String(40)) description = db.Column(db.Text) link = db.Column(db.String(512)) types = db.Column(db.Enum('Restaurant', 'Nightclub')) creator = db.Column(db.String(40))
class Activity_Pin(db.Model): __tablename__ = "activityPins" id = db.Column(db.Integer, primary_key=True) groupId = db.Column(db.Integer, db.ForeignKey("groups.id", ondelete="CASCADE")) activityName = db.Column(db.String(40)) price = db.Column(db.Integer) description = db.Column(db.Text) types = db.Column(db.Enum('Indoor', 'Outdoor')) link = db.Column(db.String(512)) creator = db.Column(db.String(40))
class Transpo_Pin(db.Model): __tablename__ = "transpoPins" id = db.Column(db.Integer, primary_key=True) groupId = db.Column(db.Integer, db.ForeignKey("groups.id", ondelete="CASCADE")) transpoName = db.Column(db.String(40)) price = db.Column(db.Integer) description = db.Column(db.Text) types = db.Column(db.Enum('Flight', 'Train', 'Bus', 'Rental Car', 'Other')) link = db.Column(db.String(512)) creator = db.Column(db.String(40))
class Lodging_Pin(db.Model): __tablename__ = "lodgingPins" id = db.Column(db.Integer, primary_key=True) groupId = db.Column(db.Integer, db.ForeignKey("groups.id", ondelete="CASCADE")) lodgeName = db.Column(db.String(40)) price = db.Column(db.Integer) rooms = db.Column(db.SMALLINT) description = db.Column(db.Text) link = db.Column(db.String(512)) creator = db.Column(db.String(40))
class Chat(db.Model): __tablename__ = "chats" id = db.Column(db.Integer, primary_key=True) groupId = db.Column(db.Integer, db.ForeignKey("groups.id", ondelete="CASCADE")) username = db.Column(db.String(30)) message = db.Column(db.Text) date = db.Column(db.DateTime(timezone=True), server_default=func.now()) @staticmethod def getChatHist(groupNum): return Chat.query.filter(Chat.groupId == groupNum).all()
class Calendar_Note(db.Model): __tablename__ = 'calendarNotes' id = db.Column(db.Integer, primary_key=True) groupId = db.Column(db.Integer, db.ForeignKey("groups.id", ondelete="CASCADE")) name = db.Column(db.String(30)) date = db.Column(db.String(40)) time = db.Column(db.String(8)) username = db.Column(db.String(30)) event_length = db.Column(db.String(15)) def getNotes(groupId): return Calendar_Note.query.filter(Calendar_Note.groupId == groupId)
class Invite_New_Account_Group(db.Model): __tablename__ = 'new_invite_group' id = db.Column(db.Integer, primary_key=True) groupId = db.Column(db.Integer, db.ForeignKey("groups.id", ondelete="CASCADE")) email = db.Column(db.String(50))