dolor3v / models.py
David Prince
Add KYC, PIN, airtime, data, purity memory
d077e09
Raw
History Blame Contribute Delete
2.29 kB
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
db = SQLAlchemy()
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False)
email = db.Column(db.String(100), nullable=False, unique=True)
password = db.Column(db.String(200), nullable=False)
account_number = db.Column(db.String(20), nullable=False, unique=True)
balance = db.Column(db.Float, nullable=False, default=0.0)
phone = db.Column(db.String(20), nullable=True)
pin = db.Column(db.String(200), nullable=True)
tier = db.Column(db.Integer, default=0)
# KYC fields
nin = db.Column(db.String(20), nullable=True)
bvn = db.Column(db.String(20), nullable=True)
id_card_url = db.Column(db.String(200), nullable=True)
nepa_bill_url = db.Column(db.String(200), nullable=True)
kyc_status = db.Column(db.String(20), default="none")
daily_limit = db.Column(db.Float, default=0.0)
max_balance = db.Column(db.Float, default=200000.0)
created_at = db.Column(db.DateTime, default=datetime.utcnow)
class Transaction(db.Model):
id = db.Column(db.Integer, primary_key=True)
sender_account_number = db.Column(db.String(20), nullable=False)
recipient_account_number = db.Column(db.String(20), nullable=False)
amount = db.Column(db.Float, nullable=False)
status = db.Column(db.String(20), nullable=False, default="completed")
is_external = db.Column(db.Boolean, default=False)
reference = db.Column(db.String(50), nullable=True)
ai_review = db.Column(db.String(500), nullable=True)
transaction_type = db.Column(db.String(20), default="transfer")
timestamp = db.Column(db.DateTime, default=datetime.utcnow)
class Alert(db.Model):
id = db.Column(db.Integer, primary_key=True)
account_number = db.Column(db.String(20), nullable=False)
message = db.Column(db.String(500), nullable=False)
read = db.Column(db.Boolean, default=False)
timestamp = db.Column(db.DateTime, default=datetime.utcnow)
class PurityMemory(db.Model):
id = db.Column(db.Integer, primary_key=True)
account_number = db.Column(db.String(20), nullable=False)
memory = db.Column(db.Text, nullable=False)
timestamp = db.Column(db.DateTime, default=datetime.utcnow)