67 lines
1.9 KiB
Python
67 lines
1.9 KiB
Python
import asyncio
|
|
import configparser
|
|
import logging
|
|
import re
|
|
|
|
import yaboli
|
|
from yaboli.util import *
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
class WtfDB(yaboli.Database):
|
|
def initialize(self, db):
|
|
with db:
|
|
db.execute("""
|
|
CREATE TABLE IF NOT EXISTS acronyms (
|
|
acronym_id INTEGER PRIMARY KEY,
|
|
acronym TEXT NOT NULL,
|
|
explanation TEXT NOT NULL,
|
|
author TEXT NOT NULL,
|
|
deleted BOOLEAN NOT NULL DEFAULT 0
|
|
)
|
|
""")
|
|
db.create_function("p_lower", 1, str.lower)
|
|
|
|
@yaboli.operation
|
|
def add(self, db, acronym, explanation, author):
|
|
with db:
|
|
db.execute("""
|
|
INSERT INTO acronyms (acronym, explanation, author)
|
|
VALUES (?, ?, ?)
|
|
""", (acronym, explanation, author))
|
|
|
|
@yaboli.operation
|
|
def find(self, db, acronym):
|
|
c = db.execute("""
|
|
SELECT acronym, explanation FROM acronyms
|
|
WHERE NOT deleted AND p_lower(acronym) = ?
|
|
ORDER BY acronym_id ASC
|
|
""", (acronym.lower(),))
|
|
return c.fetchall()
|
|
|
|
@yaboli.operation
|
|
def find_full(self, db, acronym):
|
|
c = db.execute("""
|
|
SELECT acronym_id, acronym, explanation, author FROM acronyms
|
|
WHERE NOT deleted AND p_lower(acronym) = ?
|
|
ORDER BY acronym_id ASC
|
|
""", (acronym.lower(),))
|
|
return c.fetchall()
|
|
|
|
@yaboli.operation
|
|
def get(self, db, acronym_id):
|
|
c = db.execute("""
|
|
SELECT acronym FROM acronyms
|
|
WHERE NOT deleted AND acronym_id = ?
|
|
""", (acronym_id,))
|
|
res = c.fetchone()
|
|
return None if res is None else res[0]
|
|
|
|
@yaboli.operation
|
|
def delete(self, db, acronym_id):
|
|
with db:
|
|
db.execute("""
|
|
UPDATE acronyms
|
|
SET deleted = 1
|
|
WHERE acronym_id = ?
|
|
""", (acronym_id,))
|