Files
param-auto-manager/models/__pycache__/database.cpython-310.pyc
T

174 lines
13 KiB
Plaintext
Raw Normal View History

2026-07-12 01:07:26 +08:00
o
bvRj_2ã@sPdZddlZddlZddlmZddlmZddlmZGdddƒZeƒZ dS)u
æ•°æ®åº“模型和æ“作
éN)Údatetime)Úcontextmanager)ÚConfigc@eZdZd4ddZeddƒZddZd4dd „Zd4d
d Zd d
Z d5ddZ
ddZ d6ddZ d7ddZ
ddZddZdd „Zd8d"d#„Zd$d%„Zd9d&d'„Zd:d(d)„Zd*d+„Zd,d-„Zd.d/„Zd4d0d1„Zd2d3„ZdS);ÚDatabaseNcCs|ptj|_| ¡dS©N)rÚDATABASEÚdb_pathÚinit_db)Úselfr©r úZ/home/openclaw/.openclaw/workspace-hz4th_coder/works/param-auto-manager/models/database.pyÚ__init__ s  zDatabase.__init__ccs6t |j¡}tj|_z
|VW| ¡dS| ¡w)uèŽ·å–æ•°æ®åº“连接N)Úsqlite3ÚconnectrÚRowÚ row_factoryÚclose)r
Úconnr r r Úget_connections  zDatabase.get_connectioncCsz| ¡/}| ¡}| d¡| d¡| d¡| d¡| d¡| d¡| ¡WdƒdS1s6wYdS)uåˆå§‹åŒ–æ•°æ®åº“aQ
CREATE TABLE IF NOT EXISTS articles (
id INTEGER PRIMARY KEY AUTOINCREMENT,
product_names TEXT NOT NULL,
category TEXT,
keywords TEXT,
summary TEXT,
content TEXT,
source TEXT,
url TEXT,
fetch_date DATETIME DEFAULT CURRENT_TIMESTAMP,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
)

CREATE TABLE IF NOT EXISTS pending_products (
id INTEGER PRIMARY KEY AUTOINCREMENT,
product_name TEXT NOT NULL UNIQUE,
category TEXT,
subcategory TEXT,
priority INTEGER DEFAULT 0,
source TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
)

CREATE TABLE IF NOT EXISTS processing_products (
id INTEGER PRIMARY KEY AUTOINCREMENT,
product_name TEXT NOT NULL UNIQUE,
category TEXT,
subcategory TEXT,
status TEXT DEFAULT 'processing',
started_at DATETIME DEFAULT CURRENT_TIMESTAMP,
error_message TEXT
)

CREATE TABLE IF NOT EXISTS process_history (
id INTEGER PRIMARY KEY AUTOINCREMENT,
product_name TEXT NOT NULL,
category TEXT,
subcategory TEXT,
status TEXT,
review_id TEXT,
submitted_at DATETIME DEFAULT CURRENT_TIMESTAMP,
details TEXT
)
a—
CREATE TABLE IF NOT EXISTS task_configs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL UNIQUE,
config TEXT,
enabled INTEGER DEFAULT 1,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
)
CREATE TABLE IF NOT EXISTS system_config (
key TEXT PRIMARY KEY,
value TEXT,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
)
rÚcursorÚexecuteÚcommit©r
rrr r r r s





"®zDatabase.init_dbc
Csp| ¡*}| ¡} |  dtj|dd|tj|dd||||f¡| ¡| jWdƒS1s1wYdS)u添加文章到内容库z¢
INSERT INTO articles (product_names, category, keywords, summary, content, source, url)
VALUES (?, ?, ?, ?, ?, ?, ?)
Ú ensure_asciiN©rrrÚjsonÚdumpsrÚ lastrowid)
r
Ú
product_namesÚcategoryÚkeywordsÚsummaryÚcontentÚsourceÚurlrrr r r Ú add_articleps
ÿý$øzDatabase.add_articlec
C| ¡M}| ¡}|r'| dd|dd|dd|dd|d|f¡n| dd|dd|dd|dd|df¡dd| ¡DƒWdƒS1sTwYdS)u æœç´¢æ–‡ç« z÷
SELECT * FROM articles
WHERE (product_names LIKE ? OR keywords LIKE ? OR summary LIKE ? OR content LIKE ?)
AND category = ?
ORDER BY fetch_date DESC
ú%zÐ
SELECT * FROM articles
WHERE product_names LIKE ? OR keywords LIKE ? OR summary LIKE ? OR content LIKE ?
ORDER BY fetch_date DESC
cSóg|]}t|ƒqSr ©Údict©Ú.0Úrowr r r Ú
<listcomp>óz,Database.search_articles.<locals>.<listcomp>N©rrrÚfetchall)r
Úkeywordr!rrr r r Úsearch_articles|s
,û*ü$ñzDatabase.search_articlescCsZ| ¡}| ¡}| d|f¡| ¡}|rt|ƒndWdƒS1s&wYdS)uèŽ·å–æ–‡ç« è¯¦æƒ…z#SELECT * FROM articles WHERE id = ?N)rrrÚfetchoner+)r
Ú
article_idrrr.r r r Úget_article_by_idó
$üzDatabase.get_article_by_idédrcCsV| ¡}| ¡}| d||f¡dd| ¡DƒWdƒS1s$wYdS)uèŽ·å–æ‰€æœ‰æ–‡ç« z@SELECT * FROM articles ORDER BY fetch_date DESC LIMIT ? OFFSET ?cSr)r r*r,r r r r/œr0z-Database.get_all_articles.<locals>.<listcomp>Nr1)r
ÚlimitÚoffsetrrr r r Úget_all_articles—s
$ýzDatabase.get_all_articlescCóT| ¡}| ¡}| d|f¡| ¡|jdkWdƒS1s#wYdS)u 删除文章z!DELETE FROM articles WHERE id = ?rrrrrÚrowcount)r
r6rrr r r Údelete_articležó
$üzDatabase.delete_articleÚmanualc Cs| ¡=}| ¡}z| d|||||f¡| ¡|jWWdƒStjy@| d||f¡| ¡YWdƒdSw1sDwYdS)u添加待处ç†äº§å“
INSERT INTO pending_products (product_name, category, subcategory, priority, source)
VALUES (?, ?, ?, ?, ?)
Nz½
UPDATE pending_products
SET priority = MAX(priority, ?), updated_at = CURRENT_TIMESTAMP
WHERE product_name = ?
©rrrrrrÚIntegrityError)r
Ú product_namer!Ú subcategoryÚpriorityr%rrr r r Úadd_pending_product§s$
 ýø üï ÷zDatabase.add_pending_producté
rGcCsl| ¡(}| ¡}|dkr| d|f¡n| d|f¡dd| ¡DƒWdƒS1s/wYdS)u获å–待处ç†äº§å“列表rGzMSELECT * FROM pending_products ORDER BY priority DESC, created_at ASC LIMIT ?z>SELECT * FROM pending_products ORDER BY created_at ASC LIMIT ?cSr)r r*r,r r r r/Är0z1Database.get_pending_products.<locals>.<listcomp>Nr1)r
r:Úorder_byrrr r r Úget_pending_products¼s
$úzDatabase.get_pending_productscCsJ| ¡}| ¡}| d¡| ¡dWdƒS1swYdS)u获å–待处ç†äº§å“æ•°é‡z%SELECT COUNT(*) FROM pending_productsrrrrr5rr r r Úget_pending_countÆs


$ýzDatabase.get_pending_countcCr=)u从待处ç†åˆ—表移除产å“z3DELETE FROM pending_products WHERE product_name = ?rNr>©r
rErrr r r Úremove_pending_productÍrAzDatabase.remove_pending_productc Csz| ¡/}| ¡}z| d|||f¡| ¡|jWWdƒStjy2YWdƒdSw1s6wYdS)u开始处ç†äº§å“
INSERT INTO processing_products (product_name, category, subcategory, status)
VALUES (?, ?, ?, 'processing')
NrC)r
rEr!rFrrr r r Ústart_processingÖs
ýø ö ÷zDatabase.start_processingÚ completedcCsT| ¡}| ¡}| d|f¡| ¡|jdkWdƒS1s#wYdS)u 完æˆå¤„ç†z6DELETE FROM processing_products WHERE product_name = ?rNr>)r
rEÚstatusÚ
error_messagerrr r r Úfinish_processingärAzDatabase.finish_processingcCsP| ¡}| ¡}| d¡dd| ¡DƒWdƒS1s!wYdS)u获å–处ç†ä¸­çš„产å“z!SELECT * FROM processing_productscSr)r r*r,r r r r/ñr0z4Database.get_processing_products.<locals>.<listcomp>Nr1rr r r Úget_processing_productsìs

$ýz Database.get_processing_productsc
Csl| ¡(}| ¡}| d||||||rtj|ddndf¡| ¡|jWdƒS1s/wYdS)u添加处ç†åކå²z¥
INSERT INTO process_history (product_name, category, subcategory, status, review_id, details)
VALUES (?, ?, ?, ?, ?, ?)
FrNr) r
rEr!rFrRÚ review_idÚdetailsrrr r r Úadd_process_historyôs

ÿý$øzDatabase.add_process_historycCóT| ¡}| ¡}| d|f¡dd| ¡DƒWdƒS1s#wYdS)u获å–处ç†åކå²z@SELECT * FROM process_history ORDER BY submitted_at DESC LIMIT ?cSr)r r*r,r r r r/r0z0Database.get_process_history.<locals>.<listcomp>Nr1)r
r:rrr r r Úget_process_historyó
$ýzDatabase.get_process_historycCrY)u!èŽ·å–æŒ‡å®šäº§å“的处ç†åކå²zOSELECT * FROM process_history WHERE product_name = ? ORDER BY submitted_at DESCcSr)r r*r,r r r r/ r0z3Database.get_history_by_product.<locals>.<listcomp>Nr1rNr r r Úget_history_by_productr[zDatabase.get_history_by_productc CsX| ¡}| ¡}| d|tj|ddf¡| ¡WdƒdS1s%wYdS)uä¿å­˜ä»»åŠ¡é…ç½®z
INSERT OR REPLACE INTO task_configs (name, config, updated_at)
VALUES (?, ?, CURRENT_TIMESTAMP)
FrN)rrrrrr)r
ÚnameÚconfigrrr r r Úsave_task_configs
ý
"úzDatabase.save_task_configcCs~| ¡1}| ¡}| d|f¡| ¡}|r,t|ƒ}t |d¡|d<|WdƒS WdƒdS1s8wYdS)u获å–任务é…ç½®z)SELECT * FROM task_configs WHERE name = ?r^N)rrrr5r+rÚloads)r
r]rrr.Úresultr r r Úget_task_configs
ù$øzDatabase.get_task_configcCsZ| ¡}| ¡}| d|f¡| ¡}|r|dn|WdƒS1s&wYdS)u获å–系统é…ç½®z-SELECT value FROM system_config WHERE key = ?ÚvalueNrL)r
ÚkeyÚdefaultrrr.r r r Úget_system_config&r8zDatabase.get_system_configcCsN| ¡}| ¡}| d||f¡| ¡WdƒdS1s wYdS)u设置系统é…ç½®zŒ
INSERT OR REPLACE INTO system_config (key, value, updated_at)
VALUES (?, ?, CURRENT_TIMESTAMP)
Nr)r
rdrcrrr r r Úset_system_config.s
ý
"úzDatabase.set_system_configr)r9r)NNrrB)rIrG)rQN)NN)r9)Ú__name__Ú
__module__Ú __qualname__r
rrr r'r4r7r<r@rHrKrMrOrPrTrUrXrZr\r_rbrfrgr r r r r
s0


W