generated from elburg/sts-api
Initial commit
This commit is contained in:
commit
d1f19336c2
12 changed files with 428 additions and 0 deletions
66
src/database/searchDB.py
Normal file
66
src/database/searchDB.py
Normal file
|
@ -0,0 +1,66 @@
|
|||
class Accessor:
|
||||
_DBFILE = "~/sts-api/.db/search.sqlite3"
|
||||
|
||||
def _refresh(self):
|
||||
if self.buffers.db == None:
|
||||
import sqlite3
|
||||
self.buffers.db = sqlite3.connect(self._DBFILE)
|
||||
self.buffers.dbcursor = self.buffers.db.cursor()
|
||||
|
||||
def list(self, type="*"):
|
||||
self._refresh()
|
||||
self.lastOut = self.buffers.dbcursor.execute(
|
||||
"SELECT {} FROM index".format(type))
|
||||
return self.lastOut
|
||||
|
||||
def search(self, query, limit=None, offset=None):
|
||||
self._refresh()
|
||||
if self.mode == "ro" or self.mode == "rw":
|
||||
import re
|
||||
if query != None:
|
||||
self.search.query = re.compile(f"^*{query}*$", re.IGNORECASE)
|
||||
self.search.limit = limit
|
||||
self.search.offset = offset
|
||||
if limit == None:
|
||||
self.lastOut = re.search(self.search.query, str(self.list()))
|
||||
return self.lastOut
|
||||
else:
|
||||
self.lastOut = re.search(self.search.query, str(self.list()))
|
||||
return self.lastOut[:25]
|
||||
|
||||
def addEntry(self, entryData):
|
||||
if self.mode == "ro":
|
||||
raise ImportError
|
||||
self._refresh()
|
||||
if entryData.url in self.list("url"):
|
||||
raise "EntryExists"
|
||||
self.buffers.dbcursor.execute(f"""
|
||||
INSERT INTO index VALUES
|
||||
('{entryData.fullURL}', '{entryData.faviconURL}', '{entryData.protocol}', '{entryData.title}', '{entryData.description}')
|
||||
""")
|
||||
self.buffers.db.commit()
|
||||
return True
|
||||
def removeEntry(self, filters):
|
||||
if self.mode == "ro":
|
||||
raise ImportError
|
||||
self._refresh()
|
||||
query="DELETE FROM index WHERE "
|
||||
if filters.full:
|
||||
query+=f"fullURL = {filters.fullURL}"
|
||||
elif filters.hostname:
|
||||
query+=f"fullURL LIKE %{filters.hostname}%"
|
||||
|
||||
query+=";"
|
||||
self.buffers.dbcursor.execute(query)
|
||||
self.buffers.db.commit()
|
||||
return True
|
||||
def __init__(self, mode="ro"):
|
||||
self.mode = mode
|
||||
self.search = {'query': None, 'limit': 20, 'offset': 0}
|
||||
self.lastOut = None
|
||||
self.buffers = {
|
||||
'db': None,
|
||||
'dbcursor': None,
|
||||
'read': None,
|
||||
'write': None
|
||||
}
|
9
src/frontend.py
Normal file
9
src/frontend.py
Normal file
|
@ -0,0 +1,9 @@
|
|||
def parsePOST(rqform,src):
|
||||
if rqform.action=="searchQuery":
|
||||
from database import searchDB
|
||||
results=searchDB.Accessor()
|
||||
results.search(query=rqform.query, limit=rqform.limit, offset=rqform.offset)
|
||||
return results.scannerResults
|
||||
elif rqform.action=="genFeed":
|
||||
if rqform.subAction=="operationStatus":
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue