& so it begins

This commit is contained in:
user
2026-02-28 14:50:04 +02:00
commit f00381f2b6
536 changed files with 26294 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
import {
boolean,
json,
pgTable,
serial,
text,
timestamp,
varchar,
} from "drizzle-orm/pg-core";
import { user } from "./better.auth.schema";
import { relations } from "drizzle-orm";
export const notifications = pgTable("notifications", {
id: serial("id").primaryKey(),
title: text("title").notNull(),
body: text("body").notNull(),
priority: varchar("priority", { length: 12 }).default("normal").notNull(), // "low", "normal", "high", "urgent"
type: varchar("type", { length: 12 }).notNull(),
category: varchar("category", { length: 64 }),
isRead: boolean("is_read").default(false).notNull(),
isArchived: boolean("is_archived").default(false).notNull(),
actionUrl: text("action_url"), // URL to navigate to when clicked
actionType: varchar("action_type", { length: 16 }), // Type of action ("link", "function", etc.)
actionData: json("action_data"), // Any additional data for the action
icon: varchar("icon", { length: 64 }), // Optional icon identifier
userId: text("user_id")
.notNull()
.references(() => user.id, { onDelete: "cascade" }),
// Lifecycle management
sentAt: timestamp("sent_at").notNull(),
readAt: timestamp("read_at"),
expiresAt: timestamp("expires_at"),
createdAt: timestamp("created_at").notNull(),
updatedAt: timestamp("updated_at").notNull(),
});
export const notificationsRelations = relations(notifications, ({ one }) => ({
userAccount: one(user, {
fields: [notifications.userId],
references: [user.id],
}),
}));