gyi 2dZddlZddlZddlmZddlZejejejejedddZ dZ dZ d Z d Z d Zd Zd ZddZddZdS)u 数据库模型和操作 N)datetimebackenddatabasezapp.dbcttjtjtdt jt}|}|d|d| | dS)u$初始化数据库,创建表结构T)exist_oka[ CREATE TABLE IF NOT EXISTS prompts ( id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(100) NOT NULL, content TEXT NOT NULL, model_type VARCHAR(50) NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ) a CREATE TABLE IF NOT EXISTS generation_history ( id INTEGER PRIMARY KEY AUTOINCREMENT, prompt_text TEXT NOT NULL, model_name VARCHAR(50) NOT NULL, image_count INTEGER NOT NULL, success_count INTEGER DEFAULT 0, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, status VARCHAR(20) DEFAULT 'pending' ) N) osmakedirspathdirnameDB_PATHsqlite3connectcursorexecutecommitclose)connrs 3/root/new_image_generate/backend/models/database.py init_databaser sK((48888 ?7 # #D [[]]F NN      NN      KKMMMJJLLLLLcZtjt}tj|_|S)u获取数据库连接)r rr Row row_factory)rs rget_db_connectionr0s ?7 # #D{D Krc Nt}|}|dg}|D]B}||d|d|d|d|d|ddC||S) u获取所有提示词z SELECT id, name, content, model_type, created_at, updated_at FROM prompts ORDER BY updated_at DESC idnamecontent model_type created_at updated_atrrrrr r!)rrrfetchallappendr)rrpromptsrows rget_all_promptsr'7s   D [[]]F NN   G    d)K9~l+l+l+        JJLLL Nrc&t}|}|d|f|}||r-|d|d|d|d|d|ddSd S) u根据ID获取提示词zt SELECT id, name, content, model_type, created_at, updated_at FROM prompts WHERE id = ? rrrrr r!r"N)rrrfetchoner) prompt_idrrr&s rget_prompt_by_idr+Ps   D [[]]F NN   //  CJJLLL  d)K9~l+l+l+     4rct}|}|d|||f|j}|||S)u保存新提示词z INSERT INTO prompts (name, content, model_type, created_at, updated_at) VALUES (?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) )rrr lastrowidrr)rrrrrr*s r save_promptr.isk   D [[]]F NN  $&&&  IKKMMMJJLLL rct}|}|d|f|j}|||dkS)u删除提示词z DELETE FROM prompts WHERE id = ?r)rrrrowcountrr)r*rr deleted_counts rdelete_prompt_by_idr2ys]   D [[]]F NN5 |DDDOMKKMMMJJLLL 1 rct}|}|dkrdnd}|d|||||f||dS)u保存生成历史记录r completedfailedz INSERT INTO generation_history (prompt_text, model_name, image_count, success_count, status, created_at) VALUES (?, ?, ?, ?, ?, CURRENT_TIMESTAMP) N)rrrrr) prompt_text model_name image_count success_countrrstatuss rsave_generation_historyr;s{   D [[]]F)A--[[8F NN z; v F HHH  KKMMMJJLLLLLrc t}|}|dz |z}|d|d}|d||fg}|D]I}||d|d|d|d|d |d |d d J||d krtj||z nd}|||dS)u$获取生成历史记录(分页)r<z0SELECT COUNT(*) as total FROM generation_historytotalz SELECT id, prompt_text, model_name, image_count, success_count, status, created_at FROM generation_history ORDER BY created_at DESC LIMIT ? OFFSET ? rr6r7r8r9r:r )rr6r7r8r9r:r r)recordsr?pages) rrrr)r#r$rmathceil) pagelimitrroffsetr?r@r&rAs rget_generation_historyrGs?   D [[]]FQh% F NNEFFF OO  g &E NN  G    d)}-l+}- 1(ml+       JJLLL). DIeem $ $ $qE  rct}|}|d||j}|||S)u清理旧的历史记录zd DELETE FROM generation_history WHERE created_at < datetime('now', '-{} days') )rrrformatr0rr)daysrrr1s rclear_old_historyrLsk   D [[]]F NN t  OMKKMMMJJLLL r)r<r=)rH)__doc__r rrrBr joinr __file__r rrr'r+r.r2r;rGrLrrrQs#   ',,rwrwrwx7P7P'Q'QRRT]_iks t t"""H22    ))))Xr