feat: 模块统一 ias- 前缀、独立版本与内网地址支持 (0.1.7)
- 所有 Rust crate 统一加 ias- 前缀:ai → ias-ai、common → ias-common、context → ias-context、mail → ias-mail、service → ias-service、wechat → ias-wechat - 新增 ias-main 模块承载 CLI 入口和二进制打包 - 各模块开始独立维护版本号,ias-main 0.1.7 代表整体版本 - 新增 IA_WEB_INTERNAL_URL 环境变量,版本通知同时发送公网和内网链接 - 将已有升级日志翻译为中文 - ias_upgrade_logs 新增 modules JSONB 字段 - 新增 VERSION 文件和 CHANGELOG.md - 新增 AGENTS.md 项目规则文件
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
use sqlx::PgPool;
|
||||
|
||||
use crate::web::model::{NewWebPage, WebPage};
|
||||
|
||||
pub struct WebPageRepository;
|
||||
|
||||
impl WebPageRepository {
|
||||
pub async fn create(pool: &PgPool, page: NewWebPage) -> anyhow::Result<WebPage> {
|
||||
let row = sqlx::query_as::<_, WebPage>(
|
||||
r#"
|
||||
INSERT INTO ias_web_pages (
|
||||
slug,
|
||||
page_type,
|
||||
title,
|
||||
summary,
|
||||
content,
|
||||
source_label,
|
||||
metadata
|
||||
)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7)
|
||||
RETURNING id, slug, page_type, title, summary, content, source_label, metadata, created_at
|
||||
"#,
|
||||
)
|
||||
.bind(page.slug)
|
||||
.bind(page.page_type)
|
||||
.bind(page.title)
|
||||
.bind(page.summary)
|
||||
.bind(page.content)
|
||||
.bind(page.source_label)
|
||||
.bind(page.metadata)
|
||||
.fetch_one(pool)
|
||||
.await?;
|
||||
|
||||
Ok(row)
|
||||
}
|
||||
|
||||
pub async fn find_by_type_and_slug(
|
||||
pool: &PgPool,
|
||||
page_type: &str,
|
||||
slug: &str,
|
||||
) -> anyhow::Result<Option<WebPage>> {
|
||||
let row = sqlx::query_as::<_, WebPage>(
|
||||
r#"
|
||||
SELECT id, slug, page_type, title, summary, content, source_label, metadata, created_at
|
||||
FROM ias_web_pages
|
||||
WHERE page_type = $1 AND slug = $2
|
||||
"#,
|
||||
)
|
||||
.bind(page_type)
|
||||
.bind(slug)
|
||||
.fetch_optional(pool)
|
||||
.await?;
|
||||
|
||||
Ok(row)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user