Skip to content

Commit a8b243f

Browse files
committed
#1519:getAllManufacturers enpoint
1 parent 370b8f3 commit a8b243f

6 files changed

Lines changed: 52 additions & 2 deletions

File tree

src/backend/src/controllers/projects.controllers.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Project, validateWBS, WbsNumber, wbsPipe } from 'shared';
22
import { NextFunction, Request, Response } from 'express';
3-
import { User } from '@prisma/client';
3+
import { Manufacturer, User } from '@prisma/client';
44
import { getCurrentUser } from '../utils/auth.utils';
55
import ProjectsService from '../services/projects.services';
66

@@ -138,4 +138,13 @@ export default class ProjectsController {
138138
next(error);
139139
}
140140
}
141+
142+
static async getAllManufacturers(req: Request, res: Response, next: NextFunction) {
143+
try {
144+
const manufacturers: Manufacturer[] = await ProjectsService.getAllManufacturers();
145+
return res.status(200).json(manufacturers);
146+
} catch (error: unknown) {
147+
next(error);
148+
}
149+
}
141150
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { Prisma } from '@prisma/client';
2+
3+
const manufacturerQueryArgs = Prisma.validator<Prisma.ManufacturerArgs>()({
4+
include: {
5+
materials: true
6+
}
7+
});
8+
9+
export default manufacturerQueryArgs;

src/backend/src/routes/projects.routes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,5 +55,6 @@ projectRouter.post(
5555
validateInputs,
5656
ProjectsController.createManufacturer
5757
);
58+
projectRouter.get('/bom/manufacturer', ProjectsController.getAllManufacturers);
5859

5960
export default projectRouter;

src/backend/src/services/projects.services.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { User } from '@prisma/client';
1+
import { Manufacturer, User } from '@prisma/client';
22
import { isAdmin, isGuest, isProject, LinkCreateArgs, LinkType, Project, WbsNumber, wbsPipe } from 'shared';
33
import projectQueryArgs from '../prisma-query-args/projects.query-args';
44
import prisma from '../prisma/prisma';
@@ -27,8 +27,10 @@ import {
2727
} from '../utils/description-bullets.utils';
2828
import linkQueryArgs from '../prisma-query-args/links.query-args';
2929
import linkTypeQueryArgs from '../prisma-query-args/link-types.query-args';
30+
import manufacturerQueryArgs from '../prisma-query-args/manufacturers.query-args';
3031
import { linkTypeTransformer } from '../transformers/links.transformer';
3132
import { updateLinks, linkToChangeListValue } from '../utils/links.utils';
33+
import { manufacturerTransformer } from '../transformers/manufacturer.transformer';
3234

3335
export default class ProjectsService {
3436
/**
@@ -627,4 +629,17 @@ export default class ProjectsService {
627629

628630
return newManufacturer;
629631
}
632+
633+
/**
634+
* Get all the manufacturers in the database.
635+
* @returns all the manufacturers
636+
*/
637+
static async getAllManufacturers(): Promise<Manufacturer[]> {
638+
return (
639+
await prisma.manufacturer.findMany({
640+
...manufacturerQueryArgs
641+
})
642+
).map(manufacturerTransformer);
643+
}
644+
630645
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { Manufacturer, Prisma } from '@prisma/client';
2+
import manufacturerQueryArgs from '../prisma-query-args/manufacturers.query-args';
3+
4+
export const manufacturerTransformer = (manufacturer: Prisma.ManufacturerGetPayload<typeof manufacturerQueryArgs>): Manufacturer => {
5+
return {
6+
name: manufacturer.name,
7+
dateCreated: manufacturer.dateCreated,
8+
creatorId: manufacturer.creatorId
9+
}
10+
};

src/shared/src/types/project-types.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,9 @@ export interface LinkCreateArgs {
9595
linkTypeName: string;
9696
url: string;
9797
}
98+
99+
export interface Manufacturer {
100+
name: string;
101+
dateCreated: Date;
102+
creatorId: number;
103+
}

0 commit comments

Comments
 (0)