Skip to content

Commit 9a74bc3

Browse files
committed
Change createPara function to receive structured arguments
1 parent a4b2c3b commit 9a74bc3

3 files changed

Lines changed: 40 additions & 34 deletions

File tree

src/backend/lib/db_helpers/case_manager.ts

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,36 @@ import { getTransporter } from "@/backend/lib/nodemailer";
44
import { user } from "zapatos/schema";
55
import { UserType } from "@/types/auth";
66

7-
interface paraInputProps {
8-
first_name: string;
9-
last_name: string;
10-
email: string;
7+
interface createParaProps {
8+
para: {
9+
first_name: string;
10+
last_name: string;
11+
email: string;
12+
};
13+
db: KyselyDatabaseInstance;
14+
case_manager_name: string;
15+
from_email: string;
16+
to_email: string;
17+
env: Env;
1118
}
12-
1319
/**
1420
* Checks for the existence of a user with the given email, if
1521
* they do not exist, create the user with the role of "para",
1622
* initiate email sending without awaiting result
1723
*/
1824
export async function createPara(
19-
para: paraInputProps,
20-
db: KyselyDatabaseInstance,
21-
case_manager_name: string,
22-
from_email: string,
23-
to_email: string,
24-
env: Env
25+
paraProps: createParaProps
2526
): Promise<user.Selectable> {
26-
const { first_name, last_name, email } = para;
27+
const { first_name, last_name, email } = paraProps.para;
2728

28-
let paraData = await db
29+
let paraData = await paraProps.db
2930
.selectFrom("user")
3031
.where("email", "=", email.toLowerCase())
3132
.selectAll()
3233
.executeTakeFirst();
3334

3435
if (!paraData) {
35-
paraData = await db
36+
paraData = await paraProps.db
3637
.insertInto("user")
3738
.values({
3839
first_name,
@@ -45,11 +46,11 @@ export async function createPara(
4546

4647
// promise, will not interfere with returning paraData
4748
void sendInviteEmail(
48-
from_email,
49-
to_email,
49+
paraProps.from_email,
50+
paraProps.to_email,
5051
first_name,
51-
case_manager_name,
52-
env
52+
paraProps.case_manager_name,
53+
paraProps.env
5354
);
5455
}
5556

src/backend/routers/case_manager.ts

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -320,14 +320,19 @@ export const case_manager = router({
320320
})
321321
)
322322
.mutation(async (req) => {
323-
const para = await createPara(
324-
req.input,
325-
req.ctx.db,
326-
req.ctx.auth.session.user?.name ?? "",
327-
req.ctx.env.EMAIL_FROM,
328-
req.input.email,
329-
req.ctx.env
330-
);
323+
const paraProps = {
324+
para: {
325+
first_name: req.input.first_name,
326+
last_name: req.input.last_name,
327+
email: req.input.email,
328+
},
329+
db: req.ctx.db,
330+
from_email: req.ctx.env.EMAIL_FROM,
331+
to_email: req.input.email,
332+
case_manager_name: req.ctx.auth.session.user?.name ?? "",
333+
env: req.ctx.env,
334+
};
335+
const para = await createPara(paraProps);
331336

332337
return await assignParaToCaseManager(
333338
para.user_id,

src/backend/routers/para.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,14 @@ export const para = router({
4646
.mutation(async (req) => {
4747
const { email } = req.input;
4848

49-
const para = await createPara(
50-
req.input,
51-
req.ctx.db,
52-
req.ctx.auth.session.user?.name ?? "",
53-
req.ctx.env.EMAIL_FROM,
54-
email,
55-
req.ctx.env
56-
);
49+
const para = await createPara({
50+
para: req.input,
51+
db: req.ctx.db,
52+
case_manager_name: req.ctx.auth.session.user?.name ?? "",
53+
from_email: req.ctx.env.EMAIL_FROM,
54+
to_email: email,
55+
env: req.ctx.env,
56+
});
5757
return para;
5858

5959
// TODO: Logic for sending email to staff. Should email be sent everytime or only first time? Should staff be notified that they are added to a certain case manager's list?

0 commit comments

Comments
 (0)