notes
This commit is contained in:
43
memory.py
43
memory.py
@@ -245,21 +245,34 @@ def add_memory(content, kind="note", subject="", client_name="", project_name=""
|
||||
def search_memory(query="", limit=12):
|
||||
query = clean_text(query)
|
||||
like = f"%{query}%"
|
||||
search_long_text = int(len(query) > 4)
|
||||
with connect() as db:
|
||||
if query:
|
||||
clients = db.execute(
|
||||
"SELECT * FROM clients WHERE name LIKE ? OR notes LIKE ? ORDER BY updated_at DESC LIMIT ?",
|
||||
(like, like, limit),
|
||||
"""
|
||||
SELECT * FROM clients
|
||||
WHERE name LIKE ? OR (? = 1 AND notes LIKE ?)
|
||||
ORDER BY
|
||||
CASE WHEN name = ? COLLATE NOCASE THEN 0 ELSE 1 END,
|
||||
updated_at DESC
|
||||
LIMIT ?
|
||||
""",
|
||||
(like, search_long_text, like, query, limit),
|
||||
).fetchall()
|
||||
projects = db.execute(
|
||||
"""
|
||||
SELECT p.*, c.name AS client_name
|
||||
FROM projects p
|
||||
LEFT JOIN clients c ON c.id = p.client_id
|
||||
WHERE p.name LIKE ? OR p.summary LIKE ? OR p.next_action LIKE ? OR c.name LIKE ?
|
||||
ORDER BY p.updated_at DESC LIMIT ?
|
||||
WHERE p.name LIKE ?
|
||||
OR c.name LIKE ?
|
||||
OR (? = 1 AND (p.summary LIKE ? OR p.next_action LIKE ?))
|
||||
ORDER BY
|
||||
CASE WHEN p.name = ? COLLATE NOCASE OR c.name = ? COLLATE NOCASE THEN 0 ELSE 1 END,
|
||||
p.updated_at DESC
|
||||
LIMIT ?
|
||||
""",
|
||||
(like, like, like, like, limit),
|
||||
(like, like, search_long_text, like, like, query, query, limit),
|
||||
).fetchall()
|
||||
tasks = db.execute(
|
||||
"""
|
||||
@@ -268,9 +281,12 @@ def search_memory(query="", limit=12):
|
||||
LEFT JOIN clients c ON c.id = t.client_id
|
||||
LEFT JOIN projects p ON p.id = t.project_id
|
||||
WHERE t.done = 0 AND (t.title LIKE ? OR t.details LIKE ? OR c.name LIKE ? OR p.name LIKE ?)
|
||||
ORDER BY t.created_at DESC LIMIT ?
|
||||
ORDER BY
|
||||
CASE WHEN c.name = ? COLLATE NOCASE OR p.name = ? COLLATE NOCASE THEN 0 ELSE 1 END,
|
||||
t.created_at DESC
|
||||
LIMIT ?
|
||||
""",
|
||||
(like, like, like, like, limit),
|
||||
(like, like, like, like, query, query, limit),
|
||||
).fetchall()
|
||||
repos = db.execute(
|
||||
"""
|
||||
@@ -278,9 +294,12 @@ def search_memory(query="", limit=12):
|
||||
FROM repositories r
|
||||
LEFT JOIN projects p ON p.id = r.project_id
|
||||
WHERE r.name LIKE ? OR r.local_path LIKE ? OR r.remote_url LIKE ? OR p.name LIKE ?
|
||||
ORDER BY r.updated_at DESC LIMIT ?
|
||||
ORDER BY
|
||||
CASE WHEN r.name = ? COLLATE NOCASE OR p.name = ? COLLATE NOCASE THEN 0 ELSE 1 END,
|
||||
r.updated_at DESC
|
||||
LIMIT ?
|
||||
""",
|
||||
(like, like, like, like, limit),
|
||||
(like, like, like, like, query, query, limit),
|
||||
).fetchall()
|
||||
notes = db.execute(
|
||||
"""
|
||||
@@ -288,10 +307,12 @@ def search_memory(query="", limit=12):
|
||||
FROM memories m
|
||||
LEFT JOIN clients c ON c.id = m.client_id
|
||||
LEFT JOIN projects p ON p.id = m.project_id
|
||||
WHERE m.subject LIKE ? OR m.content LIKE ? OR c.name LIKE ? OR p.name LIKE ?
|
||||
WHERE c.name LIKE ?
|
||||
OR p.name LIKE ?
|
||||
OR (? = 1 AND (m.subject LIKE ? OR m.content LIKE ?))
|
||||
ORDER BY m.created_at DESC LIMIT ?
|
||||
""",
|
||||
(like, like, like, like, limit),
|
||||
(like, like, search_long_text, like, like, limit),
|
||||
).fetchall()
|
||||
else:
|
||||
clients = db.execute("SELECT * FROM clients ORDER BY updated_at DESC LIMIT ?", (limit,)).fetchall()
|
||||
|
||||
Reference in New Issue
Block a user