Initial commit

This commit is contained in:
JoshEatsAll 2024-07-04 16:47:53 +02:00
commit d1f19336c2
12 changed files with 428 additions and 0 deletions

66
src/database/searchDB.py Normal file
View 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
View 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":