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

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

update queries

  • Property mode set to 100644
File size: 2.2 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) {
6 await db
7 .insert(usersTable)
8 .values({
9 username: username,
10 email: email,
11 passwordHash: passwordHash,
12 });
13}
14
15export async function getUserProfile(db: Database, userId: number) {
[c4dd17d]16 const [user] = await db
[b69759d]17 .select({
18 username: usersTable.username,
19 email: usersTable.email,
20 })
21 .from(usersTable)
22 .where(
23 eq(usersTable.id, userId)
24 )
25 .limit(1);
26
[c4dd17d]27 return user ?? null;
[b69759d]28}
29
30export async function isAdmin(db: Database, userId: number) {
31 const admin = await db
32 .selectDistinct()
33 .from(adminsTable)
34 .where(
35 eq(adminsTable.userId, userId)
36 )
37 .limit(1);
38
39 return admin.length > 0;
[c4dd17d]40}
41
42export async function getComponentSuggestions(db: Database) {
43 const suggestionsList = await db
44 .select()
45 .from(suggestionsTable)
46 .where(
47 eq(suggestionsTable.status, 'pending')
48 )
49 .orderBy(
50 desc(suggestionsTable.id)
51 )
52
53 return suggestionsList;
54}
55
56export async function setComponentSuggestionStatus(db: Database, suggestionId: number, adminId: number, status: string, adminComment: string) {
57 const result = await db
58 .update(suggestionsTable)
59 .set({
60 adminId: adminId,
61 status: status,
62 adminComment: adminComment
63 })
64 .where(
65 eq(suggestionsTable.id, suggestionId)
66 );
67
68 return result.rowCount;
69}
70
71export async function addComponentSuggestion(db: Database, userId: number, link: string, description: string, componentType: string) {
72 const [newSuggestion] = await db
73 .insert(suggestionsTable)
74 .values({
75 userId: userId,
76 link: link,
77 description: description,
78 componentType: componentType
79 })
80 .returning({ id: suggestionsTable.id });
81
82 return newSuggestion.id ?? null;
[b69759d]83}
Note: See TracBrowser for help on using the repository browser.