Skip to content

Commit 1923849

Browse files
committed
refactor shared DbManager into main, update gallery to use it
1 parent 2ca0d28 commit 1923849

5 files changed

Lines changed: 419 additions & 451 deletions

File tree

llms/extensions/app/db.py

Lines changed: 9 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import json
22
import os
3-
import threading
43
from datetime import datetime, timedelta
54
from typing import Any, Dict
65

7-
from .db_manager import DbManager
6+
from llms.main import DbManager
87

98

109
def with_user(data, user):
@@ -375,76 +374,6 @@ def query_threads(self, query: Dict[str, Any], user=None):
375374
self.ctx.err(f"query_threads ({take}, {skip})", e)
376375
return []
377376

378-
def insert(self, table, info, callback=None):
379-
if not info:
380-
raise Exception("info is required")
381-
382-
columns = self.columns[table]
383-
args = {}
384-
known_columns = columns.keys()
385-
for k, val in info.items():
386-
if k in known_columns and k != "id":
387-
args[k] = self.db.value(val)
388-
389-
insert_keys = list(args.keys())
390-
insert_body = ", ".join(insert_keys)
391-
insert_values = ", ".join(["?" for _ in insert_keys])
392-
393-
sql = f"INSERT INTO {table} ({insert_body}) VALUES ({insert_values})"
394-
395-
self.db.write(sql, tuple(args[k] for k in insert_keys), callback)
396-
397-
async def insert_async(self, table, info):
398-
event = threading.Event()
399-
400-
ret = [None]
401-
402-
def cb(lastrowid, rowcount, error=None):
403-
nonlocal ret
404-
if error:
405-
raise error
406-
ret[0] = lastrowid
407-
event.set()
408-
409-
self.insert(table, info, cb)
410-
event.wait()
411-
return ret[0]
412-
413-
def update(self, table, info, callback=None):
414-
if not info:
415-
raise Exception("info is required")
416-
417-
columns = self.columns[table]
418-
args = {}
419-
known_columns = columns.keys()
420-
for k, val in info.items():
421-
if k in known_columns and k != "id":
422-
args[k] = self.db.value(val)
423-
424-
update_keys = list(args.keys())
425-
update_body = ", ".join([f"{k} = :{k}" for k in update_keys])
426-
427-
args["id"] = info["id"]
428-
sql = f"UPDATE {table} SET {update_body} WHERE id = :id"
429-
430-
self.db.write(sql, args, callback)
431-
432-
async def update_async(self, table, info):
433-
event = threading.Event()
434-
435-
ret = [None]
436-
437-
def cb(lastrowid, rowcount, error=None):
438-
nonlocal ret
439-
if error:
440-
raise error
441-
ret[0] = rowcount
442-
event.set()
443-
444-
self.update(table, info, cb)
445-
event.wait()
446-
return ret[0]
447-
448377
def prepare_thread(self, thread, id=None, user=None):
449378
now = datetime.now()
450379
if id:
@@ -458,16 +387,16 @@ def prepare_thread(self, thread, id=None, user=None):
458387
return with_user(thread, user=user)
459388

460389
def create_thread(self, thread: Dict[str, Any], user=None):
461-
return self.insert("thread", self.prepare_thread(thread, user=user))
390+
return self.db.insert("thread", self.columns["thread"], self.prepare_thread(thread, user=user))
462391

463392
async def create_thread_async(self, thread: Dict[str, Any], user=None):
464-
return await self.insert_async("thread", self.prepare_thread(thread, user=user))
393+
return await self.db.insert_async("thread", self.columns["thread"], self.prepare_thread(thread, user=user))
465394

466395
def update_thread(self, id, thread: Dict[str, Any], user=None):
467-
return self.update("thread", self.prepare_thread(thread, id, user=user))
396+
return self.db.update("thread", self.columns["thread"], self.prepare_thread(thread, id, user=user))
468397

469398
async def update_thread_async(self, id, thread: Dict[str, Any], user=None):
470-
return await self.update_async("thread", self.prepare_thread(thread, id, user=user))
399+
return await self.db.update_async("thread", self.columns["thread"], self.prepare_thread(thread, id, user=user))
471400

472401
def delete_thread(self, id, user=None, callback=None):
473402
sql_where, params = self.get_user_filter(user, {"id": id})
@@ -609,21 +538,21 @@ def get_daily_request_summary(self, day, user=None):
609538

610539
def create_request(self, request: Dict[str, Any], user=None):
611540
request["createdAt"] = request["updatedAt"] = datetime.now()
612-
return self.insert("request", with_user(request, user=user))
541+
return self.db.insert("request", self.columns["request"], with_user(request, user=user))
613542

614543
async def create_request_async(self, request: Dict[str, Any], user=None):
615544
request["createdAt"] = request["updatedAt"] = datetime.now()
616-
return await self.insert_async("request", with_user(request, user=user))
545+
return await self.db.insert_async("request", self.columns["request"], with_user(request, user=user))
617546

618547
def update_request(self, id, request: Dict[str, Any], user=None):
619548
request["id"] = id
620549
request["updatedAt"] = datetime.now()
621-
return self.update("request", with_user(request, user=user))
550+
return self.db.update("request", self.columns["request"], with_user(request, user=user))
622551

623552
async def update_request_async(self, id, request: Dict[str, Any], user=None):
624553
request["id"] = id
625554
request["updatedAt"] = datetime.now()
626-
return await self.update_async("request", with_user(request, user=user))
555+
return await self.db.update_async("request", self.columns["request"], with_user(request, user=user))
627556

628557
def delete_request(self, id, user=None, callback=None):
629558
sql_where, params = self.get_user_filter(user, {"id": id})

llms/extensions/app/db_manager.py

Lines changed: 0 additions & 195 deletions
This file was deleted.

llms/extensions/gallery/__init__.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,15 @@ def get_gallery_db():
2727
return
2828

2929
def on_cache_save(context):
30-
url = context["url"]
31-
info = context["info"]
30+
url = context.get("url", None)
31+
info = context.get("info", {})
32+
user = context.get("user", None)
3233
ctx.log(f"cache saved: {url}")
3334
ctx.log(json.dumps(info, indent=2))
3435

3536
if "url" not in info:
3637
info["url"] = url
37-
g_db.insert_media(info)
38+
g_db.insert_media(info, user=user)
3839

3940
ctx.register_cache_saved_filter(on_cache_save)
4041

0 commit comments

Comments
 (0)