Files
logan 2bb4ef7a95 桌面 GUI 外链修复 + 主题顺序调整(含结构扁平化进行中的工作区基线)
- 集成 tauri-plugin-opener:Cargo/lib.rs/capabilities/npm 四处接线,新增 src/openExternal.ts(桌面走 opener,浏览器回退 window.open,相对路径绝对化)
- 关于页 4 个链接、活动栏官网菜单、代理错误横幅 2 处健康检查链接全部改走 openExternal,桌面端可正常跳转
- 设置→外观 主题顺序调整为 深色/浅色/跟随系统
- release 二进制重编并验证(浏览器实测关于页链接可开文档页)
- 附带工作区中未提交的扁平化重构现状(另一会话进行中)
- homepage 落地页与文档终检通过(8787 / 与 /docs 双 200)
2026-10-16 03:03:36 +08:00

57 lines
1.8 KiB
Go

package store
import (
"database/sql"
"errors"
"time"
)
type PublishedDoc struct {
ProjectID string `json:"projectId"`
Name string `json:"name"`
Token string `json:"token"`
Content string `json:"-"`
UpdatedAt int64 `json:"updatedAt"`
}
func (s *Store) PublishedDocs() ([]PublishedDoc, error) {
rows, err := s.db.Query(`SELECT project_id,name,token,updated_at FROM published_docs ORDER BY name`)
if err != nil {
return nil, err
}
defer rows.Close()
docs := []PublishedDoc{}
for rows.Next() {
var doc PublishedDoc
if err := rows.Scan(&doc.ProjectID, &doc.Name, &doc.Token, &doc.UpdatedAt); err != nil {
return nil, err
}
docs = append(docs, doc)
}
return docs, rows.Err()
}
func (s *Store) PublishDoc(projectID, name, content string) (PublishedDoc, error) {
var token string
err := s.db.QueryRow(`SELECT token FROM published_docs WHERE project_id=?`, projectID).Scan(&token)
if errors.Is(err, sql.ErrNoRows) {
token = newMockToken()
} else if err != nil {
return PublishedDoc{}, err
}
doc := PublishedDoc{ProjectID: projectID, Name: name, Token: token, UpdatedAt: time.Now().Unix()}
_, err = s.db.Exec(`INSERT INTO published_docs(project_id,name,token,content,updated_at) VALUES(?,?,?,?,?) ON CONFLICT(project_id) DO UPDATE SET name=excluded.name,content=excluded.content,updated_at=excluded.updated_at`, projectID, name, token, content, doc.UpdatedAt)
return doc, err
}
func (s *Store) PublishedDocByToken(token string) (PublishedDoc, error) {
var doc PublishedDoc
err := s.db.QueryRow(`SELECT project_id,name,token,content,updated_at FROM published_docs WHERE token=?`, token).Scan(&doc.ProjectID, &doc.Name, &doc.Token, &doc.Content, &doc.UpdatedAt)
return doc, err
}
func (s *Store) RevokeDoc(projectID string) error {
_, err := s.db.Exec(`DELETE FROM published_docs WHERE project_id=?`, projectID)
return err
}