mirror of
https://github.com/MCMi460/3DS-RPC.git
synced 2025-06-19 05:55:36 -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)
|
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:
|
try:
|
||||||
terminalSize = os.get_terminal_size(0).columns - 2
|
terminalSize = os.get_terminal_size(0).columns - 2
|
||||||
except OSError:
|
except OSError:
|
||||||
|
@ -6,6 +6,9 @@ from nintendo.nex import backend, friends, settings, streams
|
|||||||
from nintendo.nex import common
|
from nintendo.nex import common
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
import anyio, time, sqlite3, sys, traceback, argparse
|
import anyio, time, sqlite3, sys, traceback, argparse
|
||||||
|
|
||||||
|
from database import start_db_time
|
||||||
|
|
||||||
sys.path.append('../')
|
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.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 *
|
from api import *
|
||||||
@ -200,9 +203,9 @@ if __name__ == '__main__':
|
|||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
network = NetworkType[args.network.upper()]
|
network = NetworkType[args.network.upper()]
|
||||||
startDBTime(begun, network)
|
start_db_time(begun, network)
|
||||||
anyio.run(main)
|
anyio.run(main)
|
||||||
except (KeyboardInterrupt, Exception) as e:
|
except (KeyboardInterrupt, Exception) as e:
|
||||||
if network is not None:
|
if network is not None:
|
||||||
startDBTime(0, network)
|
start_db_time(0, network)
|
||||||
print(e)
|
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
|
nintendoclients>=2.1.0
|
||||||
flask-limiter<=2.9.2 # Until 3.0 fixes "multiple values for argument 'key_func'"
|
flask-limiter<=2.9.2 # Until 3.0 fixes "multiple values for argument 'key_func'"
|
||||||
gevent
|
gevent
|
||||||
SQLAlchemy<1.4.46
|
SQLAlchemy>=2.0
|
||||||
Flask-SQLAlchemy # Using deprecated features, apparently
|
Flask-SQLAlchemy>=3.1
|
||||||
xmltodict
|
xmltodict
|
||||||
Pillow
|
Pillow
|
||||||
pycryptodomex
|
pycryptodomex
|
||||||
|
@ -5,6 +5,9 @@ from flask import Flask, make_response, request, redirect, render_template, send
|
|||||||
from flask_limiter import Limiter
|
from flask_limiter import Limiter
|
||||||
from flask_sqlalchemy import SQLAlchemy
|
from flask_sqlalchemy import SQLAlchemy
|
||||||
import sqlite3, requests, sys, os, time, json, multiprocessing, datetime, xmltodict, pickle, secrets
|
import sqlite3, requests, sys, os, time, json, multiprocessing, datetime, xmltodict, pickle, secrets
|
||||||
|
|
||||||
|
from server.database import start_db_time
|
||||||
|
|
||||||
sys.path.append('../')
|
sys.path.append('../')
|
||||||
from api import *
|
from api import *
|
||||||
from api.love2 import *
|
from api.love2 import *
|
||||||
@ -26,8 +29,8 @@ version = 0.31
|
|||||||
agent = '3DS-RPC/'
|
agent = '3DS-RPC/'
|
||||||
|
|
||||||
startTime = time.time() # Frontend
|
startTime = time.time() # Frontend
|
||||||
startDBTime(0, 0)
|
start_db_time(0, NetworkType.NINTENDO)
|
||||||
startDBTime(0, 1)
|
start_db_time(0, NetworkType.PRETENDO)
|
||||||
startTime2Nintendo = 0 # Nintendo Backend
|
startTime2Nintendo = 0 # Nintendo Backend
|
||||||
startTime2Pretendo = 0 # Pretendo Backend
|
startTime2Pretendo = 0 # Pretendo Backend
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user