From 562ec618021844ed4ee5de5ee30160c5312f65a4 Mon Sep 17 00:00:00 2001 From: Roy Dumblauskas Date: Sat, 22 Aug 2026 18:14:26 -0500 Subject: [PATCH] enforce unique position per article --- backend/src/db/schema.ts | 8 ++++---- backend/src/routes/users.ts | 10 ++++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/backend/src/db/schema.ts b/backend/src/db/schema.ts index e40738d..d06d263 100644 --- a/backend/src/db/schema.ts +++ b/backend/src/db/schema.ts @@ -38,7 +38,7 @@ export const articles = pgTable("articles", { name: varchar({ length: 255 }).notNull(), article_status: articleStatusEnum().notNull().default("draft"), author_id: uuid().notNull().references(() => users.id, { onDelete: "cascade" }), - slug: varchar({ length: 511 }).unique().notNull(), + slug: varchar({ length: 511 }).notNull(), summary: varchar({ length: 255 }).notNull(), date_created: timestamp({ mode: "date", withTimezone: true }).defaultNow().notNull(), @@ -74,10 +74,10 @@ export const articleBlocks = pgTable("article_blocks", { content: jsonb().$type>().notNull(), }, - (table) => [{ - postPositionIdx: uniqueIndex("no_repeat_block_position_per_article") + (table) => [ + uniqueIndex("no_repeat_block_position_per_article") .on(table.article_id, table.position) - }]); + ]); export const images = pgTable("images", { id: uuid().notNull().primaryKey().defaultRandom(), // Linked in 'content' of articleBlock with type 'image' diff --git a/backend/src/routes/users.ts b/backend/src/routes/users.ts index 5921f58..1df8b35 100644 --- a/backend/src/routes/users.ts +++ b/backend/src/routes/users.ts @@ -30,6 +30,16 @@ usersRouter.get("/getUser/:userId", async (req: Request, res: Response) => { res.json(resp); }); +usersRouter.get("/getSelf", loadJWT, async (req: Request, res: Response) => { + const userId = req.jwt.payload.uid; + + const resp = await db.select() + .from(users) + .where(eq(users.id, userId)); + + res.json(resp[0]); +}); + usersRouter.get("/getUserName/:userId", async (req: Request, res: Response) => { const { userId } = req.params; const parsedId = Array.isArray(userId) ? userId[0] : userId;