Skip to content

Commit 1f88bf0

Browse files
Fixed the bugs for setting up the server
1 parent a87076b commit 1f88bf0

File tree

17 files changed

+162
-13
lines changed

17 files changed

+162
-13
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,4 +78,5 @@ dmypy.json
7878
cython_debug/
7979
instance/*
8080
!instance/.gitignore
81-
secret
81+
secret
82+
/extras/password

.idea/Banking.iml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
File renamed without changes.

routes/admin.py renamed to api/admin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from banking.database import execute_query, execute_query_dict
88
from banking.decorator import api_access_control, admin_required
9-
from banking.form_validate import SqlQueryForm, AdminActionForm, CurrencyForm
9+
from banking.form_types import SqlQueryForm, AdminActionForm, CurrencyForm
1010
from banking.get_data import get_settings, get_total_currency, get_user_by_wallet_name, \
1111
update_admin_balance
1212
from banking.log_module import create_log
File renamed without changes.

routes/requests.py renamed to api/requests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from banking.database import execute_query, execute_query_dict
77
from banking.decorator import api_access_control, login_required
8-
from banking.form_validate import ResetPasswordForm
8+
from banking.form_types import ResetPasswordForm
99
from banking.get_data import get_settings, get_client_ip, get_user_by_wallet_name
1010
from banking.log_module import create_log
1111
from banking.validate import validate_wallet_name

routes/setup.py renamed to api/setup.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
import os
2+
13
from flask import jsonify, request
24
from werkzeug.security import generate_password_hash
35

46
from banking.database import is_db_initialized, execute_query
57
from banking.decorator import api_access_control, admin_required
6-
from banking.form_validate import SetupForm, WalletForm
8+
from banking.form_types import SetupForm, WalletForm
79
from banking.get_data import get_settings, get_total_currency, get_user_by_wallet_name, \
810
update_admin_balance
911
from banking.log_module import create_log
@@ -29,6 +31,20 @@ def api_setup():
2931
admin_password = data.get('admin_password')
3032

3133
try:
34+
# Run DDL statements from schema.sql
35+
schema_path = os.path.join(os.path.dirname(__file__), '../extras/schema.sql')
36+
with open(schema_path, 'r') as f:
37+
ddl_script = f.read()
38+
39+
# Assuming execute_query can run multiple statements if passed raw SQL
40+
for statement in ddl_script.split(';'):
41+
stmt = statement.strip()
42+
if stmt:
43+
try:
44+
execute_query(stmt + ';', commit=True)
45+
except Exception as e:
46+
return jsonify({"error": "Failed to submit query to construct database", "details": f"{stmt} --> {e}"})
47+
3248
# Insert settings
3349
execute_query(
3450
"INSERT INTO settings (bank_name, currency_name, admin_password) VALUES (%s, %s, %s)",

routes/transfer.py renamed to api/transfer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from banking.database import execute_query
66
from banking.decorator import api_access_control, admin_required, login_required
7-
from banking.form_validate import TransferForm, BankTransferForm
7+
from banking.form_types import TransferForm, BankTransferForm
88
from banking.get_data import get_settings, get_client_ip, get_total_currency, get_user_by_wallet_name, \
99
update_admin_balance
1010
from banking.log_module import create_log

routes/unused.py renamed to api/unused.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def api_check_database():
2222
def api_init_database():
2323
"""API endpoint to initialize database tables"""
2424
if init_db():
25-
return jsonify({"status": "success", "message": "Database tables created successfully"})
25+
return jsonify({"status": "success", "message": "Database tables created successfully"}), 200
2626
else:
2727
return jsonify({"status": "error",
2828
"message": "Failed to create database tables. Please check your database configuration."}), 500

app.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from banking.global_vars import DB_POOL, ALLOW_PUBLIC_API_ACCESS
1212
from banking.log_module import create_log, rotate_logs
1313
from banking.validate import validate_wallet_name
14-
from routes import register_unused_api_routes, register_request_api_routes, register_get_api_routes, \
14+
from api import register_unused_api_routes, register_request_api_routes, register_get_api_routes, \
1515
register_setup_api_routes, register_transfer_api_routes, register_admin_api_routes
1616

1717
# Configuration
@@ -47,6 +47,10 @@ def home():
4747

4848
@app.route('/setup', methods=['GET', 'POST'])
4949
def setup_page():
50+
if DB_POOL is None:
51+
return render_template('error.html',
52+
message="Please setup the required ENV variables for DB URL")
53+
5054
if is_db_initialized():
5155
return redirect(url_for('home'))
5256

@@ -76,6 +80,9 @@ def setup_page():
7680

7781
@app.route('/login', methods=['GET', 'POST'])
7882
def login():
83+
if not is_db_initialized():
84+
return redirect(url_for('setup_page'))
85+
7986
if request.method == 'POST':
8087
wallet_name = request.form.get('wallet_name')
8188
password = request.form.get('password')
@@ -293,6 +300,10 @@ def admin_sql_page():
293300
@app.route('/server-health')
294301
def server_health_page():
295302
"""Public page showing server health metrics"""
303+
if not is_db_initialized():
304+
return render_template('error.html',
305+
message="The DB is not initialised so the server health page is locked from rendering")
306+
296307
settings = get_settings()
297308

298309
return render_template('server_health.html', settings=settings,
@@ -352,7 +363,8 @@ def serve_static(filename):
352363
try:
353364
print("Database pool is initialized, starting the server...")
354365
print("Checking database initialization...")
355-
init_db()
366+
if not init_db():
367+
exit("Oops! The DB init failed!! This means you have a issue with the database connection!")
356368
print("Rotating logs older than 30 days...")
357369
rotate_logs() # Perform log rotation during startup
358370
except Exception as error:

0 commit comments

Comments
 (0)