feat: support query public packages without org_id (all orgs)

Make org_id optional in find_public_course_packages API.
When omitted, return all active packages across all orgs.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-01 10:01:31 +08:00
parent eca14626ec
commit b8f87c4d40
2 changed files with 39 additions and 2 deletions
+35
View File
@@ -875,6 +875,41 @@ impl CoursePackage {
Ok((items, pages, total))
}
pub fn find_all_active_with_page(
keyword: &Option<String>,
page: i64,
page_size: i64,
conn: &mut PgConnection,
) -> anyhow::Result<(Vec<CoursePackage>, i64, i64)> {
use crate::schema::course_package::dsl::{
course_package as packages, is_delete, package_name, package_status,
sort_order, created_at,
};
let total: i64 = packages
.filter(package_status.eq("ACTIVE"))
.filter(is_delete.is_null().or(is_delete.eq(false)))
.count()
.get_result(conn)?;
let pages = (total + page_size - 1) / page_size;
let offset = (page - 1) * page_size;
let kws = keyword.clone().unwrap_or_default();
let mut query = packages
.filter(package_status.eq("ACTIVE"))
.filter(is_delete.is_null().or(is_delete.eq(false)))
.into_boxed();
if !kws.is_empty() {
let pattern = format!("%{}%", kws);
query = query.filter(package_name.like(pattern));
}
let items = query
.order(sort_order.asc())
.then_order_by(created_at.desc())
.offset(offset)
.limit(page_size)
.load::<CoursePackage>(conn)?;
Ok((items, pages, total))
}
pub fn find_all_by_teacher_id_with_page(
teacher_id: &String,
org: &String,