54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
|
|
import server
|
|
import os
|
|
import folder_paths
|
|
import json
|
|
import asyncio
|
|
from aiohttp import web
|
|
from .model_manager.model_preview import get_thumbnail_for_image_file
|
|
|
|
workspace_path = os.path.join(os.path.dirname(os.path.dirname(__file__)))
|
|
comfy_path = os.path.dirname(folder_paths.__file__)
|
|
db_dir_path = os.path.join(workspace_path, "db")
|
|
DEFAULT_USER = "guest"
|
|
|
|
@server.PromptServer.instance.routes.post("/workspace/save_db")
|
|
async def save_db(request):
|
|
# Extract parameters from the request
|
|
data = await request.json()
|
|
table = data['table']
|
|
json_data = data['json']
|
|
|
|
file_name = f'{db_dir_path}/{table}.json'
|
|
# Offload file writing to a separate thread
|
|
def write_json_string_to_db(file_name, json_data):
|
|
if not os.path.exists(db_dir_path):
|
|
os.makedirs(db_dir_path)
|
|
# Write the JSON data to the specified file
|
|
with open(file_name, 'w') as file:
|
|
file.write(json.dumps(json_data, indent=4))
|
|
await asyncio.to_thread(write_json_string_to_db, file_name, json_data)
|
|
return web.Response(text=f"JSON saved to {file_name}")
|
|
|
|
def read_table(table):
|
|
if not table:
|
|
return None
|
|
file_name = f'{db_dir_path}/{table}.json'
|
|
if not os.path.exists(file_name):
|
|
return None
|
|
|
|
try:
|
|
with open(file_name, 'r', encoding='utf-8') as file:
|
|
data = json.load(file)
|
|
return data
|
|
except json.JSONDecodeError as e:
|
|
return None
|
|
|
|
|
|
@server.PromptServer.instance.routes.get("/workspace/get_db")
|
|
async def get_workspace(request):
|
|
# Extract the table parameter from the query string
|
|
table = request.query.get('table')
|
|
data = await asyncio.to_thread(read_table, table)
|
|
return web.json_response(data)
|