diff --git a/src/db.py b/src/db.py index 1f097b6..ad5fcc8 100644 --- a/src/db.py +++ b/src/db.py @@ -884,8 +884,31 @@ def _conn(): with _ts.conn: c = _ts.conn.cursor() c.execute("PRAGMA foreign_keys = ON") + # remap NOCASE to be IRC casing + _ts.conn.create_collation("NOCASE", _collate_irc) return _ts.conn +def _collate_irc(s1, s2): + # treat hostmasks specially, otherwise call irc_lower on stuff + if "@" in s1: + hl, hr = s1.split("@", 1) + s1 = irc_lower(hl) + "@" + hr.lower() + else: + s1 = irc_lower(s1) + + if "@" in s2: + hl, hr = s2.split("@", 1) + l2 = irc_lower(hl) + "@" + hr.lower() + else: + s2 = irc_lower(s2) + + if s1 == s2: + return 0 + elif s1 < s2: + return -1 + else: + return 1 + need_install = not os.path.isfile("data.sqlite3") conn = sqlite3.connect("data.sqlite3") with conn: