cool_core/service/
postgres.rs

1//! PostgreSQL 专用 Service 包装
2//!
3//! 对齐 TS 版本的 `service/postgres.ts`。
4
5use super::base::{BaseService, SimpleService};
6use crate::error::CoolError;
7use sea_orm::{ConnectionTrait, DatabaseBackend, DatabaseConnection};
8use std::sync::Arc;
9
10/// Postgres Service
11pub struct PostgresService {
12    inner: SimpleService,
13}
14
15impl PostgresService {
16    /// 创建 Postgres Service,校验后端类型
17    pub fn new(db: Arc<DatabaseConnection>, table: impl Into<String>) -> Result<Self, CoolError> {
18        if db.get_database_backend() != DatabaseBackend::Postgres {
19            return Err(CoolError::comm("当前连接不是 Postgres 后端"));
20        }
21        Ok(Self {
22            inner: SimpleService::new(db, table),
23        })
24    }
25}
26
27#[async_trait::async_trait]
28impl BaseService for PostgresService {
29    fn db(&self) -> &DatabaseConnection {
30        self.inner.db()
31    }
32
33    fn table_name(&self) -> &str {
34        self.inner.table_name()
35    }
36}