source: database/drizzle/schema/users.ts@ b69759d

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

Add schema

  • Property mode set to 100644
File size: 1.5 KB
Line 
1import { pgTable, serial, integer, text, numeric, boolean, date, primaryKey } from "drizzle-orm/pg-core";
2
3export const usersTable = pgTable("users", {
4 id: serial("id").primaryKey(),
5 username: text("username").notNull().unique(),
6 passwordHash: text("password").notNull(),
7 email: text("email").notNull().unique()
8})
9
10export const adminsTable = pgTable("admins", {
11 userId: integer("user_id")
12 .primaryKey()
13 .references(() => usersTable.id, { onDelete: 'cascade', onUpdate: 'cascade' })
14})
15
16export const suggestionsTable = pgTable("suggestions", {
17 id: serial("id").primaryKey(),
18 userId: integer("user_id")
19 .notNull()
20 .references(() => usersTable.id, { onDelete: 'cascade', onUpdate: 'cascade' }),
21 adminId: integer("admin_id")
22 .references(() => adminsTable.userId, { onDelete: 'set null', onUpdate: 'cascade' }),
23 link: text("link").notNull(),
24 adminComment: text("admin_comment"),
25 description: text("description"),
26 status: text("status")
27 .notNull()
28 .default("pending"), // Pending, Approved, Rejected
29 componentType: text("component_type").notNull()
30});
31
32export type userItem = typeof usersTable.$inferSelect;
33export type userInsert = typeof usersTable.$inferInsert;
34
35export type adminItem = typeof adminsTable.$inferSelect;
36export type adminInsert = typeof adminsTable.$inferInsert;
37
38export type suggestionItem = typeof suggestionsTable.$inferSelect;
39export type suggestionInsert = typeof suggestionsTable.$inferInsert;
Note: See TracBrowser for help on using the repository browser.