feat: add board favourites with animations (#318)
* feat: add board favorites with animations * feat: add board favorites functionality with admin-only access * refactor: make board favorites user-specific via junction table * fix: assertUserInWorkspace * Update pnpm lockfile to match package.json * chore: clean up migrations --------- Co-authored-by: Henry <henry_ball@hotmail.co.uk>
This commit is contained in:
committed by
GitHub
parent
ec37f5480a
commit
ef5bf87fdf
@@ -2,9 +2,11 @@ import { relations, sql } from "drizzle-orm";
|
||||
import {
|
||||
bigint,
|
||||
bigserial,
|
||||
boolean,
|
||||
index,
|
||||
pgEnum,
|
||||
pgTable,
|
||||
primaryKey,
|
||||
text,
|
||||
timestamp,
|
||||
uniqueIndex,
|
||||
@@ -67,6 +69,7 @@ export const boards = pgTable(
|
||||
).enableRLS();
|
||||
|
||||
export const boardsRelations = relations(boards, ({ one, many }) => ({
|
||||
userFavorites: many(userBoardFavorites),
|
||||
createdBy: one(users, {
|
||||
fields: [boards.createdBy],
|
||||
references: [users.id],
|
||||
@@ -91,3 +94,21 @@ export const boardsRelations = relations(boards, ({ one, many }) => ({
|
||||
relationName: "boardWorkspace",
|
||||
}),
|
||||
}));
|
||||
|
||||
export const userBoardFavorites = pgTable(
|
||||
"user_board_favorites",
|
||||
{
|
||||
userId: uuid("userId")
|
||||
.notNull()
|
||||
.references(() => users.id, { onDelete: "cascade" }),
|
||||
boardId: bigint("boardId", { mode: "number" })
|
||||
.notNull()
|
||||
.references(() => boards.id, { onDelete: "cascade" }),
|
||||
createdAt: timestamp("createdAt").defaultNow().notNull(),
|
||||
},
|
||||
(table) => ({
|
||||
pk: primaryKey({ columns: [table.userId, table.boardId] }),
|
||||
userIdx: index("user_board_favorite_user_idx").on(table.userId),
|
||||
boardIdx: index("user_board_favorite_board_idx").on(table.boardId),
|
||||
}),
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
} from "drizzle-orm/pg-core";
|
||||
|
||||
import { apikey } from "./auth";
|
||||
import { boards } from "./boards";
|
||||
import { boards, userBoardFavorites } from "./boards";
|
||||
import { cards } from "./cards";
|
||||
import { imports } from "./imports";
|
||||
import { lists } from "./lists";
|
||||
@@ -84,3 +84,14 @@ export const usersToWorkspacesRelations = relations(
|
||||
}),
|
||||
}),
|
||||
);
|
||||
|
||||
export const userBoardFavoritesRelations = relations(userBoardFavorites, ({ one }) => ({
|
||||
user: one(users, {
|
||||
fields: [userBoardFavorites.userId],
|
||||
references: [users.id],
|
||||
}),
|
||||
board: one(boards, {
|
||||
fields: [userBoardFavorites.boardId],
|
||||
references: [boards.id],
|
||||
}),
|
||||
}));
|
||||
Reference in New Issue
Block a user