feat(boards): add columns for base layout and layout mode

This commit is contained in:
Meier Lukas committed 2025-11-26 22:14:06 +01:00
1 parent 0843ccda99
commit fdcfb775fa
12 files changed
+6289 -18

No files matched your search

@@ -0,0 +1,3 @@
ALTER TABLE `board` ADD `layout_mode` varchar(32) DEFAULT 'custom' NOT NULL;--> statement-breakpoint
ALTER TABLE `board` ADD `base_layout_id` varchar(64);--> statement-breakpoint
ALTER TABLE `board` ADD CONSTRAINT `board_base_layout_id_layout_id_fk` FOREIGN KEY (`base_layout_id`) REFERENCES `layout`(`id`) ON DELETE set null ON UPDATE no action;
File diff suppressed because it is too large. Load diff
@@ -260,6 +260,13 @@
"when": 1760968518445,
"tag": "0036_add_app_reference_to_integration",
"breakpoints": true
},
{
"idx": 37,
"version": "5",
"when": 1764190331048,
"tag": "0037_add_auto_layout_mode",
"breakpoints": true
}
]
}
@@ -0,0 +1,3 @@
ALTER TABLE "board" ADD COLUMN "layout_mode" varchar(32) DEFAULT 'custom' NOT NULL;--> statement-breakpoint
ALTER TABLE "board" ADD COLUMN "base_layout_id" varchar(64);--> statement-breakpoint
ALTER TABLE "board" ADD CONSTRAINT "board_base_layout_id_layout_id_fk" FOREIGN KEY ("base_layout_id") REFERENCES "public"."layout"("id") ON DELETE set null ON UPDATE no action;
File diff suppressed because it is too large. Load diff
@@ -22,6 +22,13 @@
"when": 1760968530084,
"tag": "0002_add_app_reference_to_integration",
"breakpoints": true
},
{
"idx": 3,
"version": "7",
"when": 1764190350662,
"tag": "0003_add_auto_layout_mode",
"breakpoints": true
}
]
}
@@ -0,0 +1,2 @@
ALTER TABLE `board` ADD `layout_mode` text DEFAULT 'custom' NOT NULL;--> statement-breakpoint
ALTER TABLE `board` ADD `base_layout_id` text REFERENCES layout(id);
File diff suppressed because it is too large. Load diff
@@ -246,6 +246,13 @@
"when": 1760968503571,
"tag": "0034_add_app_reference_to_integration",
"breakpoints": true
},
{
"idx": 35,
"version": "6",
"when": 1764190313293,
"tag": "0035_add_auto_layout_mode",
"breakpoints": true
}
]
}
+16 -6
View File
@@ -17,16 +17,11 @@ import {
varchar,
} from "drizzle-orm/mysql-core";
import {
backgroundImageAttachments,
backgroundImageRepeats,
backgroundImageSizes,
emptySuperJSON,
} from "@homarr/definitions";
import type {
BackgroundImageAttachment,
BackgroundImageRepeat,
BackgroundImageSize,
BoardLayoutMode,
BoardPermission,
ColorScheme,
GroupPermissionKey,
@@ -39,6 +34,12 @@ import type {
SupportedAuthProvider,
WidgetKind,
} from "@homarr/definitions";
import {
backgroundImageAttachments,
backgroundImageRepeats,
backgroundImageSizes,
emptySuperJSON,
} from "@homarr/definitions";
const customBlob = customType<{ data: Buffer }>({
dataType() {
@@ -289,6 +290,11 @@ export const boards = mysqlTable("board", {
iconColor: text(),
itemRadius: text().$type<MantineSize>().default("lg").notNull(),
disableStatus: boolean().default(false).notNull(),
// This has to be custom as the previous behaviour was custom
layoutMode: varchar({ length: 32 }).$type<BoardLayoutMode>().default("custom").notNull(),
baseLayoutId: varchar({ length: 64 }).references((): AnyMySqlColumn => layouts.id, {
onDelete: "set null",
}),
});
export const boardUserPermissions = mysqlTable(
@@ -678,6 +684,10 @@ export const boardRelations = relations(boards, ({ many, one }) => ({
userPermissions: many(boardUserPermissions),
groupPermissions: many(boardGroupPermissions),
layouts: many(layouts),
baseLayout: one(layouts, {
fields: [boards.baseLayoutId],
references: [layouts.id],
}),
groupHomes: many(groups, {
relationName: "groupRelations__board__homeBoardId",
}),
+16 -6
View File
@@ -16,16 +16,11 @@ import {
varchar,
} from "drizzle-orm/pg-core";
import {
backgroundImageAttachments,
backgroundImageRepeats,
backgroundImageSizes,
emptySuperJSON,
} from "@homarr/definitions";
import type {
BackgroundImageAttachment,
BackgroundImageRepeat,
BackgroundImageSize,
BoardLayoutMode,
BoardPermission,
ColorScheme,
GroupPermissionKey,
@@ -38,6 +33,12 @@ import type {
SupportedAuthProvider,
WidgetKind,
} from "@homarr/definitions";
import {
backgroundImageAttachments,
backgroundImageRepeats,
backgroundImageSizes,
emptySuperJSON,
} from "@homarr/definitions";
const customBlob = customType<{ data: Buffer }>({
dataType() {
@@ -288,6 +289,11 @@ export const boards = pgTable("board", {
iconColor: text(),
itemRadius: text().$type<MantineSize>().default("lg").notNull(),
disableStatus: boolean().default(false).notNull(),
// This has to be custom as the previous behaviour was custom
layoutMode: varchar({ length: 32 }).$type<BoardLayoutMode>().default("custom").notNull(),
baseLayoutId: varchar({ length: 64 }).references((): AnyPgColumn => layouts.id, {
onDelete: "set null",
}),
});
export const boardUserPermissions = pgTable(
@@ -677,6 +683,10 @@ export const boardRelations = relations(boards, ({ many, one }) => ({
userPermissions: many(boardUserPermissions),
groupPermissions: many(boardGroupPermissions),
layouts: many(layouts),
baseLayout: one(layouts, {
fields: [boards.baseLayoutId],
references: [layouts.id],
}),
groupHomes: many(groups, {
relationName: "groupRelations__board__homeBoardId",
}),
+16 -6
View File
@@ -5,16 +5,11 @@ import { relations, sql } from "drizzle-orm";
import type { AnySQLiteColumn } from "drizzle-orm/sqlite-core";
import { blob, index, int, primaryKey, sqliteTable, text } from "drizzle-orm/sqlite-core";
import {
backgroundImageAttachments,
backgroundImageRepeats,
backgroundImageSizes,
emptySuperJSON,
} from "@homarr/definitions";
import type {
BackgroundImageAttachment,
BackgroundImageRepeat,
BackgroundImageSize,
BoardLayoutMode,
BoardPermission,
ColorScheme,
GroupPermissionKey,
@@ -27,6 +22,12 @@ import type {
SupportedAuthProvider,
WidgetKind,
} from "@homarr/definitions";
import {
backgroundImageAttachments,
backgroundImageRepeats,
backgroundImageSizes,
emptySuperJSON,
} from "@homarr/definitions";
export const apiKeys = sqliteTable("apiKey", {
id: text().notNull().primaryKey(),
@@ -274,6 +275,11 @@ export const boards = sqliteTable("board", {
iconColor: text(),
itemRadius: text().$type<MantineSize>().default("lg").notNull(),
disableStatus: int({ mode: "boolean" }).default(false).notNull(),
// This has to be custom as the previous behaviour was custom
layoutMode: text().$type<BoardLayoutMode>().default("custom").notNull(),
baseLayoutId: text().references((): AnySQLiteColumn => layouts.id, {
onDelete: "set null",
}),
});
export const boardUserPermissions = sqliteTable(
@@ -663,6 +669,10 @@ export const boardRelations = relations(boards, ({ many, one }) => ({
userPermissions: many(boardUserPermissions),
groupPermissions: many(boardGroupPermissions),
layouts: many(layouts),
baseLayout: one(layouts, {
fields: [boards.baseLayoutId],
references: [layouts.id],
}),
groupHomes: many(groups, {
relationName: "groupRelations__board__homeBoardId",
}),