aboutsummaryrefslogtreecommitdiffstats
path: root/packages/db/schema.ts
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2025-07-10 19:34:31 +0000
committerMohamed Bassem <me@mbassem.com>2025-07-10 20:45:45 +0000
commit333d1610fad10e70759545f223959503288a02c6 (patch)
tree3354a21d4fa3b4dc75d03ba5f940bd3c213078fd /packages/db/schema.ts
parent93049e864ae6d281b60c23dee868bca3f585dd4a (diff)
downloadkarakeep-333d1610fad10e70759545f223959503288a02c6.tar.zst
feat: Add invite user support
Diffstat (limited to 'packages/db/schema.ts')
-rw-r--r--packages/db/schema.ts23
1 files changed, 23 insertions, 0 deletions
diff --git a/packages/db/schema.ts b/packages/db/schema.ts
index 4375b201..881d72ec 100644
--- a/packages/db/schema.ts
+++ b/packages/db/schema.ts
@@ -552,6 +552,21 @@ export const userSettings = sqliteTable("userSettings", {
timezone: text("timezone").default("UTC"),
});
+export const invites = sqliteTable("invites", {
+ id: text("id")
+ .notNull()
+ .primaryKey()
+ .$defaultFn(() => createId()),
+ email: text("email").notNull(),
+ token: text("token").notNull().unique(),
+ createdAt: createdAtField(),
+ expiresAt: integer("expiresAt", { mode: "timestamp" }).notNull(),
+ usedAt: integer("usedAt", { mode: "timestamp" }),
+ invitedBy: text("invitedBy")
+ .notNull()
+ .references(() => users.id, { onDelete: "cascade" }),
+});
+
// Relations
export const userRelations = relations(users, ({ many, one }) => ({
@@ -559,6 +574,7 @@ export const userRelations = relations(users, ({ many, one }) => ({
bookmarks: many(bookmarks),
webhooks: many(webhooksTable),
rules: many(ruleEngineRulesTable),
+ invites: many(invites),
settings: one(userSettings, {
fields: [users.id],
references: [userSettings.userId],
@@ -704,3 +720,10 @@ export const userSettingsRelations = relations(userSettings, ({ one }) => ({
references: [users.id],
}),
}));
+
+export const invitesRelations = relations(invites, ({ one }) => ({
+ invitedBy: one(users, {
+ fields: [invites.invitedBy],
+ references: [users.id],
+ }),
+}));