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

main
Last change on this file since b0685a8 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
RevLine 
[b69759d]1import type { Database } from "../db";
[c4dd17d]2import {adminsTable, suggestionsTable, usersTable} from "../schema";
3import {desc, eq} from "drizzle-orm";
[b69759d]4
5export async function createUser(db: Database, username: string, email: string, passwordHash: string) {
[83fb5e2]6 const [newUser] = await db
[b69759d]7 .insert(usersTable)
8 .values({
9 username: username,
10 email: email,
11 passwordHash: passwordHash,
[83fb5e2]12 })
13 .returning({
14 id: usersTable.id,
[b69759d]15 });
[83fb5e2]16
17 return newUser?.id ?? null;
[b69759d]18}
19
20export async function getUserProfile(db: Database, userId: number) {
[c4dd17d]21 const [user] = await db
[b69759d]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
[c4dd17d]32 return user ?? null;
[b69759d]33}
34
35export async function isAdmin(db: Database, userId: number) {
[83fb5e2]36 const [admin] = await db
[b69759d]37 .selectDistinct()
38 .from(adminsTable)
39 .where(
40 eq(adminsTable.userId, userId)
41 )
42 .limit(1);
43
[83fb5e2]44 return !!admin;
[c4dd17d]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) {
[83fb5e2]62 const [result] = await db
[c4dd17d]63 .update(suggestionsTable)
64 .set({
65 adminId: adminId,
66 status: status,
67 adminComment: adminComment
68 })
69 .where(
70 eq(suggestionsTable.id, suggestionId)
[83fb5e2]71 )
72 .returning({
73 id: suggestionsTable.id
74 });
[c4dd17d]75
[83fb5e2]76 return result?.id ?? null;
[c4dd17d]77}
78
[ea09e98]79export async function addNewComponentSuggestion(db: Database, userId: number, link: string, description: string, componentType: string) {
[c4dd17d]80 const [newSuggestion] = await db
81 .insert(suggestionsTable)
82 .values({
83 userId: userId,
84 link: link,
85 description: description,
86 componentType: componentType
87 })
[83fb5e2]88 .returning({
89 id: suggestionsTable.id
90 });
[c4dd17d]91
[83fb5e2]92 return newSuggestion?.id ?? null;
[b69759d]93}
Note: See TracBrowser for help on using the repository browser.