source: database/drizzle/queries/users.ts@ d69e088

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

fix returns and add checks

  • Property mode set to 100644
File size: 2.4 KB
Line 
1import type { Database } from "../db";
2import {adminsTable, suggestionsTable, usersTable} from "../schema";
3import {desc, eq} from "drizzle-orm";
4
5export async function createUser(db: Database, username: string, email: string, passwordHash: string) {
6 const [newUser] = await db
7 .insert(usersTable)
8 .values({
9 username: username,
10 email: email,
11 passwordHash: passwordHash,
12 })
13 .returning({
14 id: usersTable.id,
15 });
16
17 return newUser?.id ?? null;
18}
19
20export async function getUserProfile(db: Database, userId: number) {
21 const [user] = await db
22 .select({
23 username: usersTable.username,
24 email: usersTable.email,
25 })
26 .from(usersTable)
27 .where(
28 eq(usersTable.id, userId)
29 )
30 .limit(1);
31
32 return user ?? null;
33}
34
35export async function isAdmin(db: Database, userId: number) {
36 const [admin] = await db
37 .selectDistinct()
38 .from(adminsTable)
39 .where(
40 eq(adminsTable.userId, userId)
41 )
42 .limit(1);
43
44 return !!admin;
45}
46
47export async function getComponentSuggestions(db: Database) {
48 const suggestionsList = await db
49 .select()
50 .from(suggestionsTable)
51 .where(
52 eq(suggestionsTable.status, 'pending')
53 )
54 .orderBy(
55 desc(suggestionsTable.id)
56 )
57
58 return suggestionsList;
59}
60
61export async function setComponentSuggestionStatus(db: Database, suggestionId: number, adminId: number, status: string, adminComment: string) {
62 const [result] = await db
63 .update(suggestionsTable)
64 .set({
65 adminId: adminId,
66 status: status,
67 adminComment: adminComment
68 })
69 .where(
70 eq(suggestionsTable.id, suggestionId)
71 )
72 .returning({
73 id: suggestionsTable.id
74 });
75
76 return result?.id ?? null;
77}
78
79export async function addNewComponentSuggestion(db: Database, userId: number, link: string, description: string, componentType: string) {
80 const [newSuggestion] = await db
81 .insert(suggestionsTable)
82 .values({
83 userId: userId,
84 link: link,
85 description: description,
86 componentType: componentType
87 })
88 .returning({
89 id: suggestionsTable.id
90 });
91
92 return newSuggestion?.id ?? null;
93}
Note: See TracBrowser for help on using the repository browser.