helper.py 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. from flask_sqlalchemy import SQLAlchemy
  2. from flask_login import UserMixin
  3. import json
  4. # This file contains all the databases.
  5. def createDb(app):
  6. app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db'
  7. app.config['SECRET_KEY'] = 'hard to guess thing'
  8. db = SQLAlchemy(app)
  9. # Create the tables
  10. class User(UserMixin, db.Model):
  11. id = db.Column(db.Integer, primary_key=True)
  12. username = db.Column(db.Text, unique=True)
  13. password = db.Column(db.Text)
  14. def __init__(self, username, password):
  15. self.username = username
  16. self.password = password
  17. class Topic(db.Model):
  18. id = db.Column(db.Integer, primary_key=True)
  19. title = db.Column(db.Text)
  20. content = db.Column(db.Text)
  21. date = db.Column(db.Text)
  22. lastActivity = db.Column(db.Text)
  23. author = db.Column(db.Text)
  24. category = db.Column(db.Text)
  25. private = db.Column(db.Boolean)
  26. likes = db.Column(db.Text)
  27. replies = db.Column(db.Text)
  28. # Numbers
  29. likesNum = db.Column(db.Integer)
  30. repliesNum = db.Column(db.Integer)
  31. views = db.Column(db.Integer)
  32. def __init__(self, title, content, date, author, category, private=False):
  33. self.title = title
  34. self.content = content
  35. self.date = date
  36. self.author = author
  37. self.category = category
  38. self.private = private
  39. self.likesNum = 0
  40. self.repliesNum = 0
  41. self.views = 0
  42. self.likes = '[]'
  43. self.lastActivity = date
  44. # Create like and other def for this thing
  45. def like(self, username):
  46. l = json.loads(self.likes)
  47. if username in l:
  48. l.remove(username)
  49. self.likesNum -= 1
  50. self.likes = json.dumps(l)
  51. else:
  52. l.append(username)
  53. self.likesNum += 1
  54. self.likes = json.dumps(l)
  55. def reply(self, date):
  56. self.lastActivity = date
  57. self.repliesNum += 1
  58. class Reply(db.Model):
  59. id = db.Column(db.Integer, primary_key=True)
  60. content = db.Column(db.Text)
  61. date = db.Column(db.Text)
  62. author = db.Column(db.Text)
  63. inReplyTo = db.Column(db.Integer)
  64. likes = db.Column(db.Text)
  65. # Adding the numbers
  66. likesNum = db.Column(db.Integer)
  67. def __init__(self, content, date, author, inReplyTo):
  68. self.content = content
  69. self.date = date
  70. self.author = author
  71. self.inReplyTo = inReplyTo
  72. self.likesNum = 0
  73. self.likes = '[]'
  74. def like(self, username):
  75. l = json.loads(self.likes)
  76. if username in l:
  77. l.remove(username)
  78. self.likesNum -= 1
  79. self.likes = json.dumps(l)
  80. else:
  81. l.append(username)
  82. self.likesNum += 1
  83. self.likes = json.dumps(l)
  84. db.create_all()
  85. # Return the data
  86. return {'db': db, 'User': User, 'Topic': Topic, 'Reply': Reply}