Files
iAs/ias-http/src/web/repository.rs
T
wunianxiao 25dd0daa8b 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 项目规则文件
2026-07-06 17:57:48 +08:00

57 lines
1.4 KiB
Rust

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)
}
}