Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion backend/config/s3.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export function getS3() {

s3 = new S3Client({
region: AWS_REGION || 'us-east-1',

});

return s3;
}
29 changes: 14 additions & 15 deletions backend/controllers/resourceController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -171,22 +171,21 @@ export const updateResource = async (req: Request, res: Response) => {
label_ids,
} = req.body;


await prisma.externalResources.deleteMany({ where: { resource_fk: id }});
if (external_url !== '' && external_url !== null) {
await prisma.externalResources.deleteMany({ where: { resource_fk: id } });
if (external_url !== '' && external_url !== null) {
await prisma.externalResources.create({
data: { resource_fk: id, external_url },
});
}
// Upsert internal hosted resource
if (image_s3_key) {
await prisma.internalHostedResources.upsert({
where: { resource_fk: id },
update: { s3_key: image_s3_key },
create: { resource_fk: id, s3_key: image_s3_key },
});
}
data: { resource_fk: id, external_url },
});
}

// Upsert internal hosted resource
if (image_s3_key) {
await prisma.internalHostedResources.upsert({
where: { resource_fk: id },
update: { s3_key: image_s3_key },
create: { resource_fk: id, s3_key: image_s3_key },
});
}

const updated = await prisma.resource.update({
where: { id },
Expand Down
2 changes: 1 addition & 1 deletion backend/controllers/resourceLabelController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ export const getResourceLabelById = async (req: Request, res: Response) => {

const label = await prisma.resourceLabel.findUnique({
where: { id },
include: { resource: true, label: true},
include: { resource: true, label: true },
});

if (!label) {
Expand Down
1 change: 0 additions & 1 deletion backend/routes/testS3Routes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,4 @@ router.post('/s3-presign', async (req, res) => {
}
});


export default router;
15 changes: 5 additions & 10 deletions backend/tests/controllers/resourceLabel.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,11 @@ describe('ResourceLabelController', () => {
expect(res.json).toHaveBeenCalledWith(expect.objectContaining({ id: 'cktest1234abcd' }));
});


it('should handle Prisma errors gracefully', async () => {
prismaMock.categoryLabel.create.mockRejectedValue(new Error('Database error'));

const req = mockReq({
body: { resource_id: 'cktest2345abcd',
label_id: 'cktest3456abcd'},
body: { resource_id: 'cktest2345abcd', label_id: 'cktest3456abcd' },
});
const res = mockRes();

Expand Down Expand Up @@ -106,8 +104,7 @@ describe('ResourceLabelController', () => {

it('should filter labels by category when query param provided', async () => {
prismaMock.resourceLabel.findMany.mockResolvedValue([
{ id: 'cktest3333', resource_id: 'cktest4444',
label_id: 'cktest5555', },
{ id: 'cktest3333', resource_id: 'cktest4444', label_id: 'cktest5555' },
] as any);

const req = mockReq({ query: { resource_id: 'cktest4444' } });
Expand Down Expand Up @@ -168,17 +165,15 @@ describe('ResourceLabelController', () => {

const req = mockReq({
params: { id: 'cktest5555' },
body: { resource_id: 'cktestUpdate',
label_id: 'newLabelId' },
body: { resource_id: 'cktestUpdate', label_id: 'newLabelId' },
});
const res = mockRes();

await updateResourceLabel(req, res);

expect(prismaMock.categoryLabel.update).toHaveBeenCalledWith({
where: { id: 'cktest5555' },
data: { resource_id: 'cktestUpdate',
label_id: 'newLabelId', },
data: { resource_id: 'cktestUpdate', label_id: 'newLabelId' },
});
expect(res.json).toHaveBeenCalledWith(updated);
});
Expand Down Expand Up @@ -227,4 +222,4 @@ describe('ResourceLabelController', () => {
);
});
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -351,13 +351,11 @@ export default function ResourceEditorForm({
multiple
value={form.age_groups ?? []}
onChange={(e) =>
setForm({
...form,
age_groups: Array.from(e.target.selectedOptions).map(
(o) => o.value as AgeGroup
),
})
}
setForm({
...form,
age_groups: Array.from(e.target.selectedOptions).map((o) => o.value as AgeGroup),
})
}
required
className={styles.adminFormInput}
>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,9 @@ export default function LabelSelector({
className={styles.adminLabelInput}
/>
</div>
<div className="relative">
<div className="relative w-full">
{showSuggestions && suggestions.length > 0 && (
<ul className="absolute z-10 bg-white border mt-1 max-h-48 overflow-auto">
<ul className="absolute z-10 bg-white border mt-1 max-h-48 overflow-auto w-full rounded-md">
{suggestions.slice(0, 10).map((s) => (
<li
key={s.id}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import styles from './AdminResourceCard.module.css';
import React, { useState } from 'react';
import ConfirmDialog from './ConfirmDialog';


import pdfIcon from '@/assets/pdf.png';
import txtIcon from '@/assets/txt.png';
import videoIcon from '@/assets/video.png';
Expand Down Expand Up @@ -46,7 +45,7 @@ export default function AdminResourceCard({
onDelete?.(id);
setConfirmOpen(false);
};

return (
<div className={styles.cardWrapper}>
<div className={styles.card}>
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/pages/LandingPage/Landing.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ function Landing() {
<h2
className="font-extrabold font-[Suez_One] text-[#566273] mb-6"
style={{
fontFamily: 'Suez One',
fontFamily: 'Lato, sans-serif',
fontWeight: 1000,
fontStyle: 'Regular',
fontSize: '25px',
Expand Down