Openstatus
www.openstatus.dev
1import { relations, sql } from "drizzle-orm";
2import { integer, sqliteTable, text } from "drizzle-orm/sqlite-core";
3
4import { pageComponent } from "../page_components";
5import { page } from "../pages";
6import { workspace } from "../workspaces";
7
8export const pageComponentGroup = sqliteTable("page_component_groups", {
9 id: integer("id").primaryKey(),
10 workspaceId: integer("workspace_id")
11 .references(() => workspace.id, { onDelete: "cascade" })
12 .notNull(),
13 pageId: integer("page_id")
14 .references(() => page.id, { onDelete: "cascade" })
15 .notNull(),
16 name: text("name").notNull(),
17
18 createdAt: integer("created_at", { mode: "timestamp" }).default(
19 sql`(strftime('%s', 'now'))`,
20 ),
21 updatedAt: integer("updated_at", { mode: "timestamp" }).default(
22 sql`(strftime('%s', 'now'))`,
23 ),
24});
25
26export const pageComponentGroupRelations = relations(
27 pageComponentGroup,
28 ({ one, many }) => ({
29 workspace: one(workspace, {
30 fields: [pageComponentGroup.workspaceId],
31 references: [workspace.id],
32 }),
33 page: one(page, {
34 fields: [pageComponentGroup.pageId],
35 references: [page.id],
36 }),
37 pageComponents: many(pageComponent),
38 }),
39);