From 9fe26017d31885186e2945b9ffec9a7e05654868 Mon Sep 17 00:00:00 2001 From: Oliver Bryan <04oliverbryan@gmail.com> Date: Mon, 22 Dec 2025 03:16:29 +0000 Subject: [PATCH] added passwordHash and createdAt/updatedAt to user table --- .../backend/drizzle/0004_slow_demogoblin.sql | 5 + .../backend/drizzle/meta/0004_snapshot.json | 260 ++++++++++++++++++ packages/backend/drizzle/meta/_journal.json | 7 + packages/shared/src/schema.ts | 5 +- 4 files changed, 276 insertions(+), 1 deletion(-) create mode 100644 packages/backend/drizzle/0004_slow_demogoblin.sql create mode 100644 packages/backend/drizzle/meta/0004_snapshot.json diff --git a/packages/backend/drizzle/0004_slow_demogoblin.sql b/packages/backend/drizzle/0004_slow_demogoblin.sql new file mode 100644 index 0000000..441d981 --- /dev/null +++ b/packages/backend/drizzle/0004_slow_demogoblin.sql @@ -0,0 +1,5 @@ +ALTER TABLE "User" ADD COLUMN "passwordHash" varchar(255);--> statement-breakpoint +UPDATE "User" SET "passwordHash" = '$2b$10$VJ0sxL2D0Nb3rFe58nZh0epCWnpx3Kc4y0kf14U.iSaJykhDoOwgm' WHERE "passwordHash" IS NULL;--> statement-breakpoint +ALTER TABLE "User" ALTER COLUMN "passwordHash" SET NOT NULL;--> statement-breakpoint +ALTER TABLE "User" ADD COLUMN "createdAt" timestamp DEFAULT now();--> statement-breakpoint +ALTER TABLE "User" ADD COLUMN "updatedAt" timestamp DEFAULT now(); diff --git a/packages/backend/drizzle/meta/0004_snapshot.json b/packages/backend/drizzle/meta/0004_snapshot.json new file mode 100644 index 0000000..dece5a9 --- /dev/null +++ b/packages/backend/drizzle/meta/0004_snapshot.json @@ -0,0 +1,260 @@ +{ + "id": "7add1c5b-39bd-495a-9728-ef7da4b40405", + "prevId": "0c0fc7ad-7348-4d75-af0f-3e96bbf17dd5", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.Issue": { + "name": "Issue", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "Issue_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "projectId": { + "name": "projectId", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "number": { + "name": "number", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar(256)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar(2048)", + "primaryKey": false, + "notNull": true + }, + "assigneeId": { + "name": "assigneeId", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "unique_project_issue_number": { + "name": "unique_project_issue_number", + "columns": [ + { + "expression": "projectId", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "number", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "Issue_projectId_Project_id_fk": { + "name": "Issue_projectId_Project_id_fk", + "tableFrom": "Issue", + "tableTo": "Project", + "columnsFrom": [ + "projectId" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "Issue_assigneeId_User_id_fk": { + "name": "Issue_assigneeId_User_id_fk", + "tableFrom": "Issue", + "tableTo": "User", + "columnsFrom": [ + "assigneeId" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.Project": { + "name": "Project", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "Project_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "blob": { + "name": "blob", + "type": "varchar(4)", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(256)", + "primaryKey": false, + "notNull": true + }, + "ownerId": { + "name": "ownerId", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "Project_ownerId_User_id_fk": { + "name": "Project_ownerId_User_id_fk", + "tableFrom": "Project", + "tableTo": "User", + "columnsFrom": [ + "ownerId" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.User": { + "name": "User", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "User_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "name": { + "name": "name", + "type": "varchar(256)", + "primaryKey": false, + "notNull": true + }, + "username": { + "name": "username", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true + }, + "passwordHash": { + "name": "passwordHash", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updatedAt": { + "name": "updatedAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "User_username_unique": { + "name": "User_username_unique", + "nullsNotDistinct": false, + "columns": [ + "username" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": {}, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/packages/backend/drizzle/meta/_journal.json b/packages/backend/drizzle/meta/_journal.json index 7c93e9c..ab1ab28 100644 --- a/packages/backend/drizzle/meta/_journal.json +++ b/packages/backend/drizzle/meta/_journal.json @@ -29,6 +29,13 @@ "when": 1765748942767, "tag": "0003_steady_swordsman", "breakpoints": true + }, + { + "idx": 4, + "version": "7", + "when": 1766365630065, + "tag": "0004_slow_demogoblin", + "breakpoints": true } ] } \ No newline at end of file diff --git a/packages/shared/src/schema.ts b/packages/shared/src/schema.ts index c6d0880..25e7b8f 100644 --- a/packages/shared/src/schema.ts +++ b/packages/shared/src/schema.ts @@ -1,4 +1,4 @@ -import { integer, pgTable, uniqueIndex, varchar } from "drizzle-orm/pg-core"; +import { integer, pgTable, timestamp, uniqueIndex, varchar } from "drizzle-orm/pg-core"; import { createInsertSchema, createSelectSchema } from "drizzle-zod"; import { z } from "zod"; @@ -6,6 +6,9 @@ export const User = pgTable("User", { id: integer().primaryKey().generatedAlwaysAsIdentity(), name: varchar({ length: 256 }).notNull(), username: varchar({ length: 32 }).notNull().unique(), + passwordHash: varchar({ length: 255 }).notNull(), + createdAt: timestamp({ withTimezone: false }).defaultNow(), + updatedAt: timestamp({ withTimezone: false }).defaultNow(), }); export const Project = pgTable("Project", {