Skip to content
Snippets Groups Projects

Draft: initial user flow for creating a wallet

Merged Janssen, D.D. (Dylan, Student M-CS) requested to merge 2-implement_all_user_flows into main
2 files
+ 69
1
Compare changes
  • Side-by-side
  • Inline
Files
2
database.py 0 → 100644
+ 67
0
from peewee import MySQLDatabase, Model, CharField, BlobField, AutoField
from peewee import IntegerField, ForeignKeyField, DoubleField
import os
db = MySQLDatabase(None)
def connect(create_tables=False) -> None:
"""Initializes the database session and connects to the database
:param create_tables: Creates database tables [default: False]
"""
user = os.getenv("DB_USER")
pw = os.getenv("DB_PASSWORD")
host = os.getenv("DB_HOST")
port = os.getenv("DB_PORT")
name = os.getenv("DB_DATABASE")
db.init(name, host=host, port=int(port), user=user, password=pw)
db.connect()
if create_tables:
db.create_tables([State, User, Wallet,
WalletRequest, UserWallet, PendingTX])
class BaseModel(Model):
id = AutoField()
class Meta:
database = db
class State(BaseModel):
message = CharField()
menu = CharField()
prev_state = IntegerField()
class User(BaseModel):
telegram_id = IntegerField()
state_id = ForeignKeyField(State)
nickname = CharField()
variables = CharField()
class Wallet(BaseModel):
max_co_signers = IntegerField()
min_co_signers = IntegerField()
initiator_user_id = ForeignKeyField(User, backref='users')
name = CharField()
class WalletRequest(BaseModel):
token = CharField()
wallet_id = ForeignKeyField(User, backref='walletrequests')
class UserWallet(BaseModel):
user_id = ForeignKeyField(User, backref='wallets')
wallet_id = ForeignKeyField(Wallet, backref='wallets')
class PendingTX(BaseModel):
from_wallet_id = ForeignKeyField(Wallet, backref='pendingtx')
to_address = CharField()
amount = DoubleField()
fee_sat_per_byte = IntegerField()
status = IntegerField()
sign_count = IntegerField()
raw_data = BlobField()
txid = BlobField()
Loading