Guest User

schema.ts

a guest
Jan 1st, 2025
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { relations } from "drizzle-orm";
  2. import {
  3.     int,
  4.     mysqlTable,
  5.     varchar,
  6.     text,
  7.     datetime,
  8. } from "drizzle-orm/mysql-core";
  9.  
  10. export const challengeTable = mysqlTable("challenges", {
  11.     id: int("id").autoincrement().primaryKey(),
  12.     title: varchar({ length: 255 }).notNull(),
  13.     description: text().notNull(),
  14.     flag: text().notNull(),
  15.     score: int().default(0).notNull(),
  16. });
  17.  
  18. export const challengeTableRelations = relations(
  19.     challengeTable,
  20.     ({ many }) => ({
  21.         files: many(challengeFilesTable),
  22.         solves: many(challengeSolveTable),
  23.     })
  24. );
  25.  
  26. export const challengeFilesTable = mysqlTable("challengeFiles", {
  27.     id: int("id").autoincrement().primaryKey(),
  28.     url: text().notNull(),
  29.     challengeId: int().notNull(),
  30. });
  31.  
  32. export const challengeFilesTableRelations = relations(
  33.     challengeFilesTable,
  34.     ({ one }) => ({
  35.         challenge: one(challengeTable, {
  36.             fields: [challengeFilesTable.challengeId],
  37.             references: [challengeTable.id],
  38.         }),
  39.     })
  40. );
  41.  
  42. export const challengeSolveTable = mysqlTable("challengeSolves", {
  43.     id: int("id").autoincrement().primaryKey(),
  44.     solveDate: datetime().notNull(),
  45.     challengeId: int().notNull(),
  46.     userId: int().notNull(),
  47. });
  48.  
  49. export const challengeSolveTableRelations = relations(
  50.     challengeSolveTable,
  51.     ({ one }) => ({
  52.         challenge: one(challengeTable, {
  53.             fields: [challengeSolveTable.challengeId],
  54.             references: [challengeTable.id],
  55.         }),
  56.         user: one(usersTable, {
  57.             fields: [challengeSolveTable.userId],
  58.             references: [usersTable.id],
  59.         }),
  60.     })
  61. );
  62.  
  63. export const usersTable = mysqlTable("users", {
  64.     id: int("id").autoincrement().primaryKey(),
  65.     username: varchar({ length: 255 }).notNull().unique(),
  66.     tokenHash: varchar({ length: 118 }).notNull(),
  67.     score: int().notNull().default(0),
  68. });
  69.  
  70. export const usersTableRelations = relations(usersTable, ({ many }) => ({
  71.     solves: many(challengeSolveTable),
  72.     sessions: many(sessionTable),
  73. }));
  74.  
  75. export const sessionTable = mysqlTable("sessions", {
  76.     session: int().notNull(),
  77.     userId: int().notNull(),
  78. });
  79.  
  80. export const sessionTableRelations = relations(sessionTable, ({ one }) => ({
  81.     user: one(usersTable, {
  82.         fields: [sessionTable.userId],
  83.         references: [usersTable.id],
  84.     }),
  85. }));
Advertisement
Add Comment
Please, Sign In to add comment