diff options
| author | Mohamed Bassem <me@mbassem.com> | 2025-07-10 19:34:31 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2025-07-10 20:45:45 +0000 |
| commit | 333d1610fad10e70759545f223959503288a02c6 (patch) | |
| tree | 3354a21d4fa3b4dc75d03ba5f940bd3c213078fd /packages/db/schema.ts | |
| parent | 93049e864ae6d281b60c23dee868bca3f585dd4a (diff) | |
| download | karakeep-333d1610fad10e70759545f223959503288a02c6.tar.zst | |
feat: Add invite user support
Diffstat (limited to 'packages/db/schema.ts')
| -rw-r--r-- | packages/db/schema.ts | 23 |
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], + }), +})); |
