mirror of
https://github.com/rommapp/romm.git
synced 2026-06-29 23:35:47 +00:00
endpoints structure recactor
This commit is contained in:
12
backend/src/endpoints/platform.py
Normal file
12
backend/src/endpoints/platform.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from fastapi import APIRouter
|
||||
|
||||
from handler import dbh
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("/platforms")
|
||||
def platforms() -> dict:
|
||||
"""Returns platforms data"""
|
||||
|
||||
return {'data': dbh.get_platforms()}
|
||||
65
backend/src/endpoints/rom.py
Normal file
65
backend/src/endpoints/rom.py
Normal file
@@ -0,0 +1,65 @@
|
||||
from fastapi import APIRouter, Request
|
||||
|
||||
from logger.logger import log, COLORS
|
||||
from handler import igdbh, dbh
|
||||
from utils import fs
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("/platforms/{p_slug}/roms/{file_name}")
|
||||
def rom(p_slug: str, file_name: str) -> dict:
|
||||
"""Returns one rom data of the desired platform"""
|
||||
|
||||
return {'data': dbh.get_rom(p_slug, file_name)}
|
||||
|
||||
|
||||
@router.get("/platforms/{p_slug}/roms")
|
||||
def roms(p_slug: str) -> dict:
|
||||
"""Returns all roms of the desired platform"""
|
||||
|
||||
return {'data': dbh.get_roms(p_slug)}
|
||||
|
||||
|
||||
@router.patch("/platforms/{p_slug}/roms")
|
||||
async def updateRom(req: Request, p_slug: str) -> dict:
|
||||
"""Updates rom details"""
|
||||
|
||||
data: dict = await req.json()
|
||||
rom: dict = data['rom']
|
||||
updatedRom: dict = data['updatedRom']
|
||||
log.info(f"Updating {COLORS['orange']}{updatedRom['file_name']}{COLORS['reset']} details")
|
||||
r_igdb_id, file_name_no_tags, r_slug, r_name, summary, url_cover = igdbh.get_rom_details(updatedRom['file_name'], rom['p_igdb_id'], updatedRom['r_igdb_id'])
|
||||
path_cover_s, path_cover_l, has_cover = fs.get_cover_details(True, p_slug, updatedRom['file_name'], url_cover)
|
||||
updatedRom['file_name_no_tags'] = file_name_no_tags
|
||||
updatedRom['r_igdb_id'] = r_igdb_id
|
||||
updatedRom['p_igdb_id'] = rom['p_igdb_id']
|
||||
updatedRom['r_slug'] = r_slug
|
||||
updatedRom['p_slug'] = p_slug
|
||||
updatedRom['name'] = r_name
|
||||
updatedRom['summary'] = summary
|
||||
updatedRom['path_cover_s'] = path_cover_s
|
||||
updatedRom['path_cover_l'] = path_cover_l
|
||||
updatedRom['has_cover'] = has_cover
|
||||
updatedRom['file_path'] = rom['file_path']
|
||||
updatedRom['file_size'] = rom['file_size']
|
||||
updatedRom['multi'] = rom['multi']
|
||||
updatedRom['file_extension'] = fs.get_file_extension(updatedRom)
|
||||
reg, rev, other_tags = fs.parse_tags(updatedRom['file_name'])
|
||||
updatedRom.update({'region': reg, 'revision': rev, 'tags': other_tags})
|
||||
if 'url_cover' in updatedRom.keys(): del updatedRom['url_cover']
|
||||
fs.rename_rom(p_slug, rom['file_name'], updatedRom['file_name'])
|
||||
dbh.update_rom(p_slug, rom['file_name'], updatedRom)
|
||||
return {'data': updatedRom}
|
||||
|
||||
|
||||
@router.delete("/platforms/{p_slug}/roms/{file_name}")
|
||||
def remove_rom(p_slug: str, file_name: str, filesystem: bool=False) -> dict:
|
||||
"""Detele rom from filesystem and database"""
|
||||
|
||||
log.info(f"Deleting {file_name} from database")
|
||||
dbh.delete_rom(p_slug, file_name)
|
||||
if filesystem:
|
||||
log.info(f"Removing {file_name} from filesystem")
|
||||
fs.remove_rom(p_slug, file_name)
|
||||
return {'msg': 'success'}
|
||||
@@ -0,0 +1,24 @@
|
||||
from fastapi import APIRouter, Request
|
||||
import emoji
|
||||
|
||||
from logger.logger import log, COLORS
|
||||
from handler import igdbh
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.put("/search/roms/igdb")
|
||||
async def search_rom_igdb(req: Request, igdb_id: str=None) -> dict:
|
||||
"""Get all the roms matched from igdb."""
|
||||
|
||||
data: dict = await req.json()
|
||||
log.info(emoji.emojize(":magnifying_glass_tilted_right: IGDB Searching"))
|
||||
if igdb_id:
|
||||
log.info(f"Searching by id: {igdb_id}")
|
||||
matched_roms = igdbh.get_matched_roms_by_id(igdb_id)
|
||||
else:
|
||||
log.info(emoji.emojize(f":video_game: {data['rom']['p_slug']}: {COLORS['orange']}{data['rom']['file_name']}{COLORS['reset']}"))
|
||||
matched_roms = igdbh.get_matched_roms(data['rom']['file_name'], data['rom']['p_igdb_id'], data['rom']['p_slug'])
|
||||
log.info("Results:")
|
||||
[log.info(f"\t - {COLORS['blue']}{rom['name']}{COLORS['reset']}") for rom in matched_roms]
|
||||
return {'data': matched_roms}
|
||||
|
||||
@@ -1,17 +1,24 @@
|
||||
from fastapi import FastAPI, Request
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
import uvicorn
|
||||
import emoji
|
||||
|
||||
from logger.logger import log, COLORS
|
||||
from handler import igdbh, dbh
|
||||
from config import DEV_PORT, DEV_HOST
|
||||
from utils import fs, fastapi
|
||||
from utils import fastapi
|
||||
|
||||
from endpoints import scan
|
||||
from endpoints import scan, search, platform, rom
|
||||
|
||||
app = FastAPI()
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["*"],
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
app.include_router(scan.router)
|
||||
fastapi.allow_cors(app)
|
||||
app.include_router(search.router)
|
||||
app.include_router(platform.router)
|
||||
app.include_router(rom.router)
|
||||
|
||||
|
||||
@app.on_event("startup")
|
||||
@@ -20,87 +27,5 @@ def startup() -> None:
|
||||
pass
|
||||
|
||||
|
||||
@app.get("/platforms")
|
||||
def platforms() -> dict:
|
||||
"""Returns platforms data"""
|
||||
|
||||
return {'data': dbh.get_platforms()}
|
||||
|
||||
|
||||
@app.get("/platforms/{p_slug}/roms/{file_name}")
|
||||
def rom(p_slug: str, file_name: str) -> dict:
|
||||
"""Returns one rom data of the desired platform"""
|
||||
|
||||
return {'data': dbh.get_rom(p_slug, file_name)}
|
||||
|
||||
|
||||
@app.get("/platforms/{p_slug}/roms")
|
||||
def roms(p_slug: str) -> dict:
|
||||
"""Returns all roms of the desired platform"""
|
||||
|
||||
return {'data': dbh.get_roms(p_slug)}
|
||||
|
||||
|
||||
@app.patch("/platforms/{p_slug}/roms")
|
||||
async def updateRom(req: Request, p_slug: str) -> dict:
|
||||
"""Updates rom details"""
|
||||
|
||||
data: dict = await req.json()
|
||||
rom: dict = data['rom']
|
||||
updatedRom: dict = data['updatedRom']
|
||||
log.info(f"Updating {COLORS['orange']}{updatedRom['file_name']}{COLORS['reset']} details")
|
||||
r_igdb_id, file_name_no_tags, r_slug, r_name, summary, url_cover = igdbh.get_rom_details(updatedRom['file_name'], rom['p_igdb_id'], updatedRom['r_igdb_id'])
|
||||
path_cover_s, path_cover_l, has_cover = fs.get_cover_details(True, p_slug, updatedRom['file_name'], url_cover)
|
||||
updatedRom['file_name_no_tags'] = file_name_no_tags
|
||||
updatedRom['r_igdb_id'] = r_igdb_id
|
||||
updatedRom['p_igdb_id'] = rom['p_igdb_id']
|
||||
updatedRom['r_slug'] = r_slug
|
||||
updatedRom['p_slug'] = p_slug
|
||||
updatedRom['name'] = r_name
|
||||
updatedRom['summary'] = summary
|
||||
updatedRom['path_cover_s'] = path_cover_s
|
||||
updatedRom['path_cover_l'] = path_cover_l
|
||||
updatedRom['has_cover'] = has_cover
|
||||
updatedRom['file_path'] = rom['file_path']
|
||||
updatedRom['file_size'] = rom['file_size']
|
||||
updatedRom['multi'] = rom['multi']
|
||||
updatedRom['file_extension'] = fs.get_file_extension(updatedRom)
|
||||
reg, rev, other_tags = fs.parse_tags(updatedRom['file_name'])
|
||||
updatedRom.update({'region': reg, 'revision': rev, 'tags': other_tags})
|
||||
if 'url_cover' in updatedRom.keys(): del updatedRom['url_cover']
|
||||
fs.rename_rom(p_slug, rom['file_name'], updatedRom['file_name'])
|
||||
dbh.update_rom(p_slug, rom['file_name'], updatedRom)
|
||||
return {'data': updatedRom}
|
||||
|
||||
|
||||
@app.delete("/platforms/{p_slug}/roms/{file_name}")
|
||||
def remove_rom(p_slug: str, file_name: str, filesystem: bool=False) -> dict:
|
||||
"""Detele rom from filesystem and database"""
|
||||
|
||||
log.info(f"Deleting {file_name} from database")
|
||||
dbh.delete_rom(p_slug, file_name)
|
||||
if filesystem:
|
||||
log.info(f"Removing {file_name} from filesystem")
|
||||
fs.remove_rom(p_slug, file_name)
|
||||
return {'msg': 'success'}
|
||||
|
||||
|
||||
@app.put("/search/roms/igdb")
|
||||
async def search_rom_igdb(req: Request, igdb_id: str=None) -> dict:
|
||||
"""Get all the roms matched from igdb."""
|
||||
|
||||
data: dict = await req.json()
|
||||
log.info(emoji.emojize(":magnifying_glass_tilted_right: IGDB Searching"))
|
||||
if igdb_id:
|
||||
log.info(f"Searching by id: {igdb_id}")
|
||||
matched_roms = igdbh.get_matched_roms_by_id(igdb_id)
|
||||
else:
|
||||
log.info(emoji.emojize(f":video_game: {data['rom']['p_slug']}: {COLORS['orange']}{data['rom']['file_name']}{COLORS['reset']}"))
|
||||
matched_roms = igdbh.get_matched_roms(data['rom']['file_name'], data['rom']['p_igdb_id'], data['rom']['p_slug'])
|
||||
log.info("Results:")
|
||||
[log.info(f"\t - {COLORS['blue']}{rom['name']}{COLORS['reset']}") for rom in matched_roms]
|
||||
return {'data': matched_roms}
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
uvicorn.run("main:app", host=DEV_HOST, port=DEV_PORT, reload=True)
|
||||
|
||||
@@ -1,21 +1,7 @@
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
|
||||
from handler import igdbh
|
||||
from utils import fs
|
||||
from models.platform import Platform
|
||||
from models.rom import Rom
|
||||
from logger.logger import log
|
||||
|
||||
|
||||
def allow_cors(app: FastAPI) -> None:
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["*"],
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
|
||||
def scan_platform(p_slug: str) -> Platform:
|
||||
|
||||
Reference in New Issue
Block a user