Compare commits
No commits in common. "6a18d811a0ad86cc5850051e02ce9f274aafe720" and "9ebe7933cbdd7ccd8a26df9a7c7441be4e1f0dab" have entirely different histories.
6a18d811a0
...
9ebe7933cb
2 changed files with 21 additions and 28 deletions
|
|
@ -3,9 +3,6 @@ import psycopg
|
||||||
|
|
||||||
from xenu_nntp.config import Config
|
from xenu_nntp.config import Config
|
||||||
|
|
||||||
def default(a, b):
|
|
||||||
return b if a is None else a
|
|
||||||
|
|
||||||
class DatabaseOrder(enum.Enum):
|
class DatabaseOrder(enum.Enum):
|
||||||
DEFAULT = 0
|
DEFAULT = 0
|
||||||
ASC = 1
|
ASC = 1
|
||||||
|
|
@ -148,16 +145,13 @@ class Database():
|
||||||
|
|
||||||
self.db.execute(sql, values)
|
self.db.execute(sql, values)
|
||||||
|
|
||||||
def query_sql(self, table, sql, values: list=None):
|
def query_sql(self, table, sql, values=list()):
|
||||||
cr = DatabaseTableCursor(table, self.db.cursor())
|
cr = DatabaseTableCursor(table, self.db.cursor())
|
||||||
cr.execute(sql, default(values, list()))
|
cr.execute(sql, values)
|
||||||
|
|
||||||
return cr
|
return cr
|
||||||
|
|
||||||
def query(self, table, values: dict=None, order_by: list=None):
|
def query(self, table, values=dict(), order_by=list()):
|
||||||
values = default(values, dict())
|
|
||||||
order_by = default(order_by, list())
|
|
||||||
|
|
||||||
sql = "select %s from %s" % (
|
sql = "select %s from %s" % (
|
||||||
', '.join(table.columns),
|
', '.join(table.columns),
|
||||||
table.name
|
table.name
|
||||||
|
|
@ -187,12 +181,10 @@ class Database():
|
||||||
|
|
||||||
return self.query_sql(table, sql, list(values.values()))
|
return self.query_sql(table, sql, list(values.values()))
|
||||||
|
|
||||||
def get(self, table, values: dict=None):
|
def get(self, table, values: dict=dict()):
|
||||||
return self.query(table, default(values, dict())).fetchone()
|
return self.query(table, values).fetchone()
|
||||||
|
|
||||||
def _call(self, table, fn: str, column: str, values: dict=None) -> int:
|
|
||||||
values = default(values, dict())
|
|
||||||
|
|
||||||
|
def _call(self, table, fn: str, column: str, values: dict=dict()) -> int:
|
||||||
sql = f"select {fn}({column}) as ret from {table.name}"
|
sql = f"select {fn}({column}) as ret from {table.name}"
|
||||||
|
|
||||||
if len(values) > 0:
|
if len(values) > 0:
|
||||||
|
|
@ -203,11 +195,11 @@ class Database():
|
||||||
|
|
||||||
return row[0] if row is not None else None
|
return row[0] if row is not None else None
|
||||||
|
|
||||||
def min(self, table, column: str, values: dict=None) -> int:
|
def min(self, table, column: str, values: dict=dict()) -> int:
|
||||||
return self._call(table, 'min', column, default(values, dict()))
|
return self._call(table, 'min', column, values)
|
||||||
|
|
||||||
def max(self, table, column: str, values: dict=None) -> int:
|
def max(self, table, column: str, values: dict=dict()) -> int:
|
||||||
return self._call(table, 'max', column, default(values, dict()))
|
return self._call(table, 'max', column, values)
|
||||||
|
|
||||||
def count(self, table, values: dict=None) -> int:
|
def count(self, table, values: dict=dict()) -> int:
|
||||||
return self._call(table, 'count', table.key, default(values, dict()))
|
return self._call(table, 'count', table.key, values)
|
||||||
|
|
|
||||||
|
|
@ -37,18 +37,19 @@ class Server():
|
||||||
|
|
||||||
try:
|
try:
|
||||||
sock, addr = listener.accept()
|
sock, addr = listener.accept()
|
||||||
except:
|
except ssl.SSLError:
|
||||||
return
|
return
|
||||||
|
|
||||||
def spawn():
|
def spawn():
|
||||||
try:
|
session = Session(self, sock)
|
||||||
session = Session(self, sock)
|
|
||||||
session.handle()
|
|
||||||
except:
|
|
||||||
sock.close()
|
|
||||||
|
|
||||||
thread = threading.Thread(target=spawn)
|
try:
|
||||||
thread.start()
|
session.handle()
|
||||||
|
|
||||||
|
thread = threading.Thread(target=spawn)
|
||||||
|
thread.start()
|
||||||
|
except (ssl.SSLEOFError, ssl.SSLError):
|
||||||
|
pass
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
hosts = re.split(r'\s*,\s*', self.config.get('listen', 'host'))
|
hosts = re.split(r'\s*,\s*', self.config.get('listen', 'host'))
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue