64 lines
1.4 KiB
Python
64 lines
1.4 KiB
Python
import sqlite3
|
|
from typing import Optional
|
|
|
|
|
|
DB_PATH = "bans.db"
|
|
|
|
|
|
def get_db(db_path: str = DB_PATH):
|
|
db = sqlite3.connect(db_path)
|
|
# ensure that the database exists
|
|
db.executescript(
|
|
"""
|
|
create table if not exists bans(
|
|
id integer primary key,
|
|
action varchar(5),
|
|
board varchar(10),
|
|
length varchar(10),
|
|
now varchar(30),
|
|
name varchar(100),
|
|
trip varchar(30),
|
|
com text,
|
|
time varchar(30),
|
|
sub varchar(100),
|
|
nsfw boolean,
|
|
thumb varchar(100),
|
|
ext varchar(10),
|
|
w int,
|
|
h int,
|
|
tn_w int,
|
|
tn_h int,
|
|
md5 varchar(100),
|
|
fsize integer,
|
|
filename text,
|
|
tim varchar(30),
|
|
thumb_path text,
|
|
reason varchar(200)
|
|
);
|
|
"""
|
|
)
|
|
def dict_factory(cursor, row):
|
|
d = {}
|
|
for idx, col in enumerate(cursor.description):
|
|
d[col[0]] = row[idx]
|
|
return d
|
|
|
|
db.row_factory = dict_factory
|
|
|
|
return db
|
|
|
|
|
|
def search_db(
|
|
board: Optional[str] = None,
|
|
reason: Optional[str] = None,
|
|
name: Optional[str] = None,
|
|
com: Optional[str] = None,
|
|
sub: Optional[str] = None,
|
|
time_before: int = 0,
|
|
time_after: int = 0,
|
|
md5: Optional[str] = None,
|
|
):
|
|
query = """
|
|
SELECT action, board, length, post, thumb_path, reason
|
|
"""
|