source: pages/dashboard/admin/adminDashboard.telefunc.ts@ 40ac7a9

main
Last change on this file since 40ac7a9 was 226fbbb, checked in by Tome <gjorgievtome@…>, 7 months ago

Update telefunctions

  • Property mode set to 100644
File size: 2.3 KB
Line 
1import * as drizzleQueries from "../../../database/drizzle/queries";
2import { requireAdmin } from "../../../server/telefunc/ctx";
3import {Abort} from "telefunc";
4import { validateComponentSpecificData } from "../../../database/drizzle/config/componentFieldConfig";
5
6export async function getAdminInfoAndData() {
7 const { c, userId } = await requireAdmin();
8
9 const admin = await drizzleQueries.getUserProfile(c.db, userId);
10
11 if (!admin) throw new Error();
12
13 const pendingBuilds = await drizzleQueries.getPendingBuilds(c.db);
14 const userBuilds = await drizzleQueries.getUserBuilds(c.db, userId);
15 const componentSuggestions = await drizzleQueries.getComponentSuggestions(c.db);
16
17 return {
18 admin,
19 pendingBuilds,
20 userBuilds,
21 componentSuggestions
22 };
23}
24
25export async function onSetBuildApprovalStatus({ buildId, isApproved }
26 : { buildId: number; isApproved: boolean }) {
27 const { c, userId } = await requireAdmin()
28
29 if (!Number.isInteger(buildId) || buildId <= 0) throw Abort();
30
31 const result = await drizzleQueries.setBuildApprovalStatus(c.db, buildId, isApproved);
32
33 if (!result) throw Abort();
34
35 return { success: true };
36}
37
38export async function onSetComponentSuggestionStatus({ suggestionId, status, adminComment }
39 : { suggestionId: number; status: string; adminComment: string }) {
40 const { c, userId } = await requireAdmin()
41
42
43 if(!Number.isInteger(suggestionId) || suggestionId <= 0) throw Abort();
44
45 const result = await drizzleQueries.setComponentSuggestionStatus(c.db, suggestionId, userId, status, adminComment);
46
47 if (!result) throw Abort();
48
49 return { success: true };
50}
51
52export async function onCreateNewComponent({ name, brand, price, imgUrl, type, specificData }
53 : { name: string; brand: string; price: number; imgUrl: string; type: string, specificData: any }) {
54
55 const { c, userId } = await requireAdmin()
56
57 if(!validateComponentSpecificData(type, specificData)) throw Abort();
58
59 const newComponentId = await drizzleQueries.addNewComponent(c.db, name, brand, price, imgUrl, type, specificData);
60
61 if(!newComponentId) throw Abort();
62
63 return newComponentId;
64}
Note: See TracBrowser for help on using the repository browser.