@@ -90,12 +90,14 @@ def do_search(db: Session, category: str, filters: str, order: Union[OrderingDir
9090 else :
9191 filters += ', ' + search
9292 for f in filter (None , map (str .strip , filters .split (',' ))):
93+ pre = suff = '%'
94+ if f [- 1 ] == '$' :
95+ f = f [:- 1 ]
96+ suff = ''
9397 if f [0 ] == '"' and f [- 1 ] == '"' :
9498 f = f .strip ('"' )
95- elif f [- 1 ] == '$' :
96- f = f'%{ f [:- 1 ]} '
97- else :
98- f = f'%{ f } %'
99+ pre = suff = ''
100+ f = pre + f + suff
99101 f .replace ('*' , '%' ).replace ('?' , '_' )
100102 stmt = stmt .where (or_ (Archive .title .like (f ), Archive .subtitle .like (f ), Archive .id .in_ (select (Archive .id ).outerjoin (Archive .tags ).where (Tag .tag .like (f )))))
101103 if order is None :
@@ -122,7 +124,7 @@ def do_search(db: Session, category: str, filters: str, order: Union[OrderingDir
122124
123125
124126@app .get ("/api/search" )
125- def search_archive (category : str , filter : str , start : int , order : OrderingDirection , sortby : str = "title" , db : Session = Depends (get_db )):
127+ def search_archive (filter : str , start : int , order : OrderingDirection , category : str = '' , sortby : str = "title" , db : Session = Depends (get_db )):
126128 data , recordsFiltered , recordsTotal = do_search (db , category = category , filters = filter ,
127129 start = start , order = order , sortby = sortby , query_total = True )
128130 return {"data" : data , "draw" : 0 , "recordsFiltered" : recordsFiltered , "recordsTotal" : recordsTotal }
@@ -254,7 +256,7 @@ def download_archive(id: str, db: Session = Depends(get_db)):
254256
255257
256258@app .get ("/api/archives/{id}/files" )
257- def extract_archive (id : str , force : bool , db : Session = Depends (get_db )):
259+ def extract_archive (id : str , force : bool = True , db : Session = Depends (get_db )):
258260 a = db .get (Archive , id )
259261 if a is None :
260262 return JSONResponse ({"operation" : "" , "error" : "This ID doesn't exist on the server." , "success" : 0 }, status .HTTP_400_BAD_REQUEST )
@@ -336,6 +338,10 @@ def delete_archive(id: str, db: Session = Depends(get_db)):
336338 "filename" : str (p )
337339 }
338340
341+ @app .post ("/api/archives/{id}/extract" ) # Deprecated but used by Ichaival
342+ def extract_archive (id : str ):
343+ return RedirectResponse (f'/api/archives/{ id } /files' , status_code = status .HTTP_303_SEE_OTHER )
344+
339345
340346# Database API
341347
@@ -392,8 +398,9 @@ def get_all_categories(db: Session = Depends(get_db)):
392398
393399
394400@app .put ("/api/categories" )
395- def create_category (name : str , pinned : bool = False , search : Union [str , None ] = None , db : Session = Depends (get_db )):
396- if len (search ) == 0 : search = None
401+ def create_category (name : Annotated [str , Form ()] = None , name2 : Annotated [str , Query (alias = "name" )] = None , pinned : bool = False , search : Union [str , None ] = None , db : Session = Depends (get_db )):
402+ if name is None : name = name2
403+ if not search is None and len (search ) == 0 : search = None
397404 c = Category (name = name , pinned = pinned , search = search )
398405 db .add (c )
399406 db .commit ()
@@ -508,7 +515,7 @@ def info():
508515 "name" : "ComicLib" ,
509516 "motd" : "Welcome to the library powered by ComicLib!" ,
510517 "version" : __version__ ,
511- "version_name" : "Kaosu " ,
518+ "version_name" : "ComicLib " ,
512519 "version_desc" : "Ababababa" ,
513520 "total_pages_read" : "0" ,
514521 "has_password" : "0" ,
0 commit comments