source: pages/dashboard/admin/adminDashboard.telefunc.ts@ fc8a8b1

main
Last change on this file since fc8a8b1 was 5750945, checked in by Tome <gjorgievtome@…>, 7 months ago

Dockerize app

  • Property mode set to 100644
File size: 2.3 KB
RevLine 
[b69759d]1import * as drizzleQueries from "../../../database/drizzle/queries";
2import { requireAdmin } from "../../../server/telefunc/ctx";
3import {Abort} from "telefunc";
[5750945]4import { validateComponentSpecificData } from "../../../database/drizzle/util/componentFieldConfig";
[b69759d]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);
[5ce5904]15 const componentSuggestions = await drizzleQueries.getComponentSuggestions(c.db);
[b69759d]16
17 return {
18 admin,
19 pendingBuilds,
20 userBuilds,
[5ce5904]21 componentSuggestions
[b69759d]22 };
23}
24
[226fbbb]25export async function onSetBuildApprovalStatus({ buildId, isApproved }
[b69759d]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
[226fbbb]38export async function onSetComponentSuggestionStatus({ suggestionId, status, adminComment }
[b69759d]39 : { suggestionId: number; status: string; adminComment: string }) {
40 const { c, userId } = await requireAdmin()
41
42
[5ce5904]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 };
[226fbbb]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
[83fb5e2]63 return { success: true };
[226fbbb]64}
Note: See TracBrowser for help on using the repository browser.