Skip to content

Commit b2b50c6

Browse files
committed
♻️ refactor(organizations): move get_organization_member to repository
- Create GetOrganizationMember factory function in organizations repository - Update moderations context to use new repository function - Remove local get_organization_member from context files - Clean up unused imports - Follows established PascalCase factory pattern
1 parent f1639c5 commit b2b50c6

File tree

4 files changed

+39
-29
lines changed

4 files changed

+39
-29
lines changed

sources/moderations/api/src/:id/context.ts

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,11 @@
22

33
import type { App_Context } from "@~/app.middleware/context";
44
import { urls } from "@~/app.urls";
5-
import {
6-
schema,
7-
type IdentiteProconnect_PgDatabase,
8-
} from "@~/identite-proconnect.database";
95
import type { GetModerationWithDetailsDto } from "@~/moderations.repository";
6+
import type { GetOrganizationMemberDto } from "@~/organizations.repository";
107
import type { GetFicheOrganizationByIdHandler } from "@~/organizations.lib/usecase";
118
import { type get_domain_count_dto } from "@~/organizations.repository/get_domain_count";
129
import { type get_organization_members_count_dto } from "@~/organizations.repository/get_organization_members_count";
13-
import { and, eq } from "drizzle-orm";
1410
import type { Env, InferRequestType } from "hono";
1511
import { useRequestContext } from "hono/jsx-renderer";
1612

@@ -25,7 +21,7 @@ export interface ContextVariablesType extends Env {
2521
Variables: {
2622
domain: string;
2723
moderation: GetModerationWithDetailsDto;
28-
organization_member: get_organization_member_dto;
24+
organization_member: GetOrganizationMemberDto;
2925
organization_fiche: Awaited<ReturnType<GetFicheOrganizationByIdHandler>>;
3026
query_organization_members_count: Promise<get_organization_members_count_dto>;
3127
query_domain_count: Promise<get_domain_count_dto>;
@@ -49,18 +45,3 @@ export const usePageRequestContext = useRequestContext<
4945

5046
//
5147

52-
export async function get_organization_member(
53-
{ pg }: { pg: IdentiteProconnect_PgDatabase },
54-
{ user_id, organization_id }: { user_id: number; organization_id: number },
55-
) {
56-
return pg.query.users_organizations.findFirst({
57-
columns: { is_external: true },
58-
where: and(
59-
eq(schema.users_organizations.user_id, user_id),
60-
eq(schema.users_organizations.organization_id, organization_id),
61-
),
62-
});
63-
}
64-
export type get_organization_member_dto = Awaited<
65-
ReturnType<typeof get_organization_member>
66-
>;

sources/moderations/api/src/:id/index.tsx

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ import { getContext } from "hono/context-storage";
1717
import { jsxRenderer } from "hono/jsx-renderer";
1818
import moderation_procedures_router from "./$procedures";
1919
import { GetModerationWithDetails } from "@~/moderations.repository";
20+
import { GetOrganizationMember } from "@~/organizations.repository";
2021
import {
21-
get_organization_member,
2222
type ContextType,
2323
type ContextVariablesType,
2424
} from "./context";
@@ -64,13 +64,11 @@ export default new Hono<ContextType>()
6464

6565
//
6666

67-
const organization_member = await get_organization_member(
68-
{ pg: identite_pg },
69-
{
70-
organization_id: moderation.organization_id,
71-
user_id: moderation.user.id,
72-
},
73-
);
67+
const get_organization_member = GetOrganizationMember(identite_pg);
68+
const organization_member = await get_organization_member({
69+
organization_id: moderation.organization_id,
70+
user_id: moderation.user.id,
71+
});
7472

7573
//
7674

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
//
2+
3+
import {
4+
schema,
5+
type IdentiteProconnect_PgDatabase,
6+
} from "@~/identite-proconnect.database";
7+
import { and, eq } from "drizzle-orm";
8+
9+
//
10+
11+
export function GetOrganizationMember(pg: IdentiteProconnect_PgDatabase) {
12+
return async function get_organization_member({
13+
user_id,
14+
organization_id,
15+
}: {
16+
user_id: number;
17+
organization_id: number;
18+
}) {
19+
return pg.query.users_organizations.findFirst({
20+
columns: { is_external: true },
21+
where: and(
22+
eq(schema.users_organizations.user_id, user_id),
23+
eq(schema.users_organizations.organization_id, organization_id),
24+
),
25+
});
26+
};
27+
}
28+
29+
export type GetOrganizationMemberHandler = ReturnType<typeof GetOrganizationMember>;
30+
export type GetOrganizationMemberDto = Awaited<ReturnType<GetOrganizationMemberHandler>>;

sources/organizations/repository/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ export * from "./add_verified_domain";
55
export * from "./get_organization_by_id";
66
export * from "./get_organizations_by_user_id";
77
export * from "./get_organizations_list";
8+
export * from "./GetOrganizationMember";

0 commit comments

Comments
 (0)