models.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. # Database Models
  2. from . import db # that SQLAlchemy Object in __init__.py
  3. from flask_login import UserMixin
  4. from flask import app
  5. from sqlalchemy.sql import func
  6. class User(db.Model, UserMixin): # User Database
  7. id = db.Column(db.Integer, primary_key=True)
  8. email = db.Column(db.String(150), unique=True)
  9. password = db.Column(db.String(150))
  10. username = db.Column(db.String(150))
  11. profile_image = db.Column(db.String(150))
  12. focus = db.Column(db.Integer)
  13. totphash = db.Column(db.String(32), unique=True)
  14. class TX(db.Model):
  15. id = db.Column(db.Integer, primary_key=True)
  16. filehash = db.Column(db.String(64)) # sha256 hash
  17. datetime = db.Column(db.DateTime(timezone=True))
  18. source_id = db.Column(db.Integer)
  19. destination_id = db.Column(db.Integer)
  20. price = db.Column(db.Float)
  21. txhash = db.Column(db.String(64))
  22. class Hashchain(db.Model):
  23. id = db.Column(db.Integer, primary_key=True)
  24. blockhash = db.Column(db.String(64))
  25. mint_date = db.Column(db.DateTime(timezone=True), default=func.now())
  26. class Art(db.Model):
  27. id = db.Column(db.Integer, primary_key=True)
  28. name = db.Column(db.String(200))
  29. description = db.Column(db.String(200))
  30. filehash = db.Column(db.String(64), unique=True) # sha256 hash # parent foreign key
  31. owner = db.Column(db.Integer)
  32. creator = db.Column(db.Integer)
  33. dname = db.Column(db.String(20)) # designated DB name
  34. class List(db.Model):
  35. id = db.Column(db.Integer, primary_key=True)
  36. filehash = db.Column(db.String(64), unique=True) # sha256 hash # one-to-one from Art
  37. seller = db.Column(db.Integer)
  38. min_price = db.Column(db.Float)
  39. out_price = db.Column(db.Float)
  40. cur_bid = db.Column(db.Float)
  41. timeout = db.Column(db.String(20))
  42. list_date = db.Column(db.DateTime(timezone=True), default=func.now())
  43. class Bids(db.Model):
  44. id = db.Column(db.Integer, primary_key=True)
  45. filehash = db.Column(db.String(64)) # sha256 hash # one-to-many from List
  46. buyer = db.Column(db.Integer)
  47. bid_price = db.Column(db.Float)
  48. bid_date = db.Column(db.DateTime(timezone=True), default=func.now())
  49. class Wallet(db.Model):
  50. id = db.Column(db.Integer, primary_key=True)
  51. user_id = db.Column(db.Integer, unique=True)
  52. amount = db.Column(db.Integer) # in cents
  53. class Stripe(db.Model):
  54. # This table is for keeping track of top-up
  55. # transactions
  56. id = db.Column(db.Integer, primary_key=True)
  57. user_id = db.Column(db.Integer)
  58. raw_amount = db.Column(db.Integer) # in cents (multiply by 100)
  59. tx_date = db.Column(db.DateTime(timezone=True), default=func.now())