mirror of
https://github.com/MCMi460/3DS-RPC.git
synced 2025-06-18 13:35:34 -04:00
Initial migration towards separate database logic
We're simply breaking apart logic here - the majority of models are not implemented. The upgrade to Flask-SQLAlchemy has not yet been tested on `server`.
This commit is contained in:
parent
f478bd3fc5
commit
ac44dc663b
@ -39,13 +39,6 @@ def getPath(path):
|
||||
|
||||
return os.path.join(root, path)
|
||||
|
||||
def startDBTime(time, network):
|
||||
with sqlite3.connect('sqlite/fcLibrary.db') as con:
|
||||
cursor = con.cursor()
|
||||
cursor.execute('DELETE FROM config WHERE network=' + str(network)) # doing this isn't the most intelegent of ideas but oh well (i hope you don't need to ever add another config :D)
|
||||
cursor.execute('INSERT INTO config (BACKEND_UPTIME, NETWORK) VALUES (%s, %s)' % (time, network,))
|
||||
con.commit()
|
||||
|
||||
try:
|
||||
terminalSize = os.get_terminal_size(0).columns - 2
|
||||
except OSError:
|
||||
|
@ -6,6 +6,9 @@ from nintendo.nex import backend, friends, settings, streams
|
||||
from nintendo.nex import common
|
||||
from enum import Enum
|
||||
import anyio, time, sqlite3, sys, traceback, argparse
|
||||
|
||||
from database import start_db_time
|
||||
|
||||
sys.path.append('../')
|
||||
from api.private import SERIAL_NUMBER, MAC_ADDRESS, DEVICE_CERT, DEVICE_NAME, REGION, LANGUAGE, NINTENDO_PID, PRETENDO_PID, PID_HMAC, NINTENDO_NEX_PASSWORD, PRETENDO_NEX_PASSWORD
|
||||
from api import *
|
||||
@ -200,9 +203,9 @@ if __name__ == '__main__':
|
||||
args = parser.parse_args()
|
||||
|
||||
network = NetworkType[args.network.upper()]
|
||||
startDBTime(begun, network)
|
||||
start_db_time(begun, network)
|
||||
anyio.run(main)
|
||||
except (KeyboardInterrupt, Exception) as e:
|
||||
if network is not None:
|
||||
startDBTime(0, network)
|
||||
start_db_time(0, network)
|
||||
print(e)
|
31
server/database.py
Normal file
31
server/database.py
Normal file
@ -0,0 +1,31 @@
|
||||
import os
|
||||
|
||||
from sqlalchemy import create_engine, delete
|
||||
from sqlalchemy.orm import DeclarativeBase, mapped_column, Mapped, Session
|
||||
from sqlalchemy.types import Integer
|
||||
import sys
|
||||
|
||||
sys.path.append('../')
|
||||
from api.networks import NetworkType
|
||||
|
||||
|
||||
class Base(DeclarativeBase):
|
||||
pass
|
||||
|
||||
|
||||
class Config(Base):
|
||||
__tablename__ = "config"
|
||||
|
||||
network: Mapped[NetworkType] = mapped_column("network", Integer(), primary_key=True)
|
||||
backend_uptime: Mapped[float] = mapped_column("BACKEND_UPTIME")
|
||||
|
||||
|
||||
def start_db_time(time: float, network_type: NetworkType):
|
||||
"""Updates the database to track the starting time for the specific backend."""
|
||||
engine = create_engine('sqlite:///' + os.path.abspath('sqlite/fcLibrary.db'))
|
||||
with Session(engine) as session:
|
||||
# TODO: This should be an upsert, not a deletion and insertion.
|
||||
session.execute(delete(Config).where(Config.network == network_type))
|
||||
new_time = Config(network=network_type, backend_uptime=time)
|
||||
session.add(new_time)
|
||||
session.commit()
|
@ -3,8 +3,8 @@ flask
|
||||
nintendoclients>=2.1.0
|
||||
flask-limiter<=2.9.2 # Until 3.0 fixes "multiple values for argument 'key_func'"
|
||||
gevent
|
||||
SQLAlchemy<1.4.46
|
||||
Flask-SQLAlchemy # Using deprecated features, apparently
|
||||
SQLAlchemy>=2.0
|
||||
Flask-SQLAlchemy>=3.1
|
||||
xmltodict
|
||||
Pillow
|
||||
pycryptodomex
|
||||
|
@ -5,6 +5,9 @@ from flask import Flask, make_response, request, redirect, render_template, send
|
||||
from flask_limiter import Limiter
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
import sqlite3, requests, sys, os, time, json, multiprocessing, datetime, xmltodict, pickle, secrets
|
||||
|
||||
from server.database import start_db_time
|
||||
|
||||
sys.path.append('../')
|
||||
from api import *
|
||||
from api.love2 import *
|
||||
@ -26,8 +29,8 @@ version = 0.31
|
||||
agent = '3DS-RPC/'
|
||||
|
||||
startTime = time.time() # Frontend
|
||||
startDBTime(0, 0)
|
||||
startDBTime(0, 1)
|
||||
start_db_time(0, NetworkType.NINTENDO)
|
||||
start_db_time(0, NetworkType.PRETENDO)
|
||||
startTime2Nintendo = 0 # Nintendo Backend
|
||||
startTime2Pretendo = 0 # Pretendo Backend
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user