models.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. class Art(db.Model):
  26. id = db.Column(db.Integer, primary_key=True)
  27. name = db.Column(db.String(200))
  28. description = db.Column(db.String(200))
  29. filehash = db.Column(db.String(64), unique=True) # sha256 hash # parent foreign key
  30. owner = db.Column(db.Integer)
  31. creator = db.Column(db.Integer)
  32. dname = db.Column(db.String(20)) # designated DB name
  33. class List(db.Model):
  34. id = db.Column(db.Integer, primary_key=True)
  35. filehash = db.Column(db.String(64), unique=True) # sha256 hash # one-to-one from Art
  36. seller = db.Column(db.Integer)
  37. min_price = db.Column(db.Float)
  38. out_price = db.Column(db.Float)
  39. cur_bid = db.Column(db.Float)
  40. timeout = db.Column(db.String(20))
  41. list_date = db.Column(db.DateTime(timezone=True), default=func.now())
  42. class Bids(db.Model):
  43. id = db.Column(db.Integer, primary_key=True)
  44. filehash = db.Column(db.String(64)) # sha256 hash # one-to-many from List
  45. buyer = db.Column(db.Integer)
  46. bid_price = db.Column(db.Float)
  47. bid_date = db.Column(db.DateTime(timezone=True), default=func.now())
  48. class Wallet(db.Model):
  49. id = db.Column(db.Integer, primary_key=True)
  50. user_id = db.Column(db.Integer, unique=True)
  51. amount = db.Column(db.Integer) # in cents
  52. class Stripe(db.Model):
  53. # This table is for keeping track of top-up
  54. # transactions
  55. id = db.Column(db.Integer, primary_key=True)
  56. user_id = db.Column(db.Integer)
  57. raw_amount = db.Column(db.Integer) # in cents (multiply by 100)
  58. tx_date = db.Column(db.DateTime(timezone=True), default=func.now())