()
set("organization_member", organization_member);
return next();
},
+ async function set_query_domain_count(
+ { set, var: { moderation, moncomptepro_pg } },
+ next,
+ ) {
+ set(
+ "query_domain_count",
+ get_domain_count(moncomptepro_pg, {
+ organization_id: moderation.organization_id,
+ }),
+ );
+ return next();
+ },
async function set_query_organization_members_count(
{ set, var: { moderation, moncomptepro_pg } },
next,
diff --git a/packages/~/organizations/api/src/:id/page.tsx b/packages/~/organizations/api/src/:id/page.tsx
index 9e0d1496..edd3e862 100644
--- a/packages/~/organizations/api/src/:id/page.tsx
+++ b/packages/~/organizations/api/src/:id/page.tsx
@@ -29,7 +29,7 @@ export default async function Page() {
- 🌐 Domaines de l'organisation
+ 🌐 domaine connu dans l'organisation
{
+ const unicorn_organization_id = await create_unicorn_organization(pg);
+
+ const domain_unicorn = await get_domain_count(pg, {
+ organization_id: unicorn_organization_id,
+ });
+
+ expect(domain_unicorn).toEqual(0);
+});
+
+test("returns 1 member", async () => {
+ const unicorn_organization_id = await create_unicorn_organization(pg);
+
+ const domain_unicorn = await get_domain_count(pg, {
+ organization_id: unicorn_organization_id,
+ });
+
+ expect(domain_unicorn).toBe(1);
+});
+
+test.only("returns 3 domains", async () => {
+ const unicorn_organization_id = await create_unicorn_organization(pg);
+ await pg.insert(schema.email_domains).values({
+ domain: "bi.corn",
+ organization_id: unicorn_organization_id,
+ });
+ await pg.insert(schema.email_domains).values({
+ domain: "xorn.corn",
+ organization_id: unicorn_organization_id,
+ });
+
+ const domain_unicorn = await get_domain_count(pg, {
+ organization_id: unicorn_organization_id,
+ });
+
+ expect(domain_unicorn).toBe(3);
+});
diff --git a/packages/~/organizations/repository/src/get_domain_count.ts b/packages/~/organizations/repository/src/get_domain_count.ts
new file mode 100644
index 00000000..bbc4c46f
--- /dev/null
+++ b/packages/~/organizations/repository/src/get_domain_count.ts
@@ -0,0 +1,24 @@
+//
+
+import { schema, type MonComptePro_PgDatabase } from "@~/moncomptepro.database";
+import { count as drizzle_count, eq } from "drizzle-orm";
+
+//
+
+export async function get_domain_count(
+ pg: MonComptePro_PgDatabase,
+ { organization_id }: { organization_id: number },
+) {
+ const [{ value: count }] = await pg
+ .select({ value: drizzle_count() })
+ .from(schema.email_domains)
+ .innerJoin(
+ schema.organizations,
+ eq(schema.email_domains.organization_id, schema.organizations.id),
+ )
+ .where(eq(schema.organizations.id, organization_id));
+
+ return count;
+}
+
+export type get_domain_count_dto = Awaited>;