aboutsummaryrefslogtreecommitdiff
path: root/apps/web/server
diff options
context:
space:
mode:
authorKush Thaker <[email protected]>2024-07-31 10:56:40 +0530
committerKush Thaker <[email protected]>2024-07-31 10:56:40 +0530
commit6e1d53e28a056e429c54e1e6af45eaa7939daa41 (patch)
tree21dfd3c64742d9e9405e68b1695acbb95f5fdde2 /apps/web/server
parentfix ids not present in storecontent (diff)
downloadsupermemory-6e1d53e28a056e429c54e1e6af45eaa7939daa41.tar.xz
supermemory-6e1d53e28a056e429c54e1e6af45eaa7939daa41.zip
queues so far
Co-authored-by: Dhravya Shah <[email protected]>
Diffstat (limited to 'apps/web/server')
-rw-r--r--apps/web/server/db/schema.ts26
1 files changed, 26 insertions, 0 deletions
diff --git a/apps/web/server/db/schema.ts b/apps/web/server/db/schema.ts
index 32b80719..11711997 100644
--- a/apps/web/server/db/schema.ts
+++ b/apps/web/server/db/schema.ts
@@ -7,6 +7,7 @@ import {
sqliteTableCreator,
text,
integer,
+ blob,
} from "drizzle-orm/sqlite-core";
import type { AdapterAccountType } from "next-auth/adapters";
@@ -242,3 +243,28 @@ export const canvas = createTable(
export type ChatThread = typeof chatThreads.$inferSelect;
export type ChatHistory = typeof chatHistory.$inferSelect;
+
+export const jobs = createTable(
+ "jobs",
+ {
+ id: integer("id").notNull().primaryKey({ autoIncrement: true }),
+ userId: text("userId")
+ .notNull()
+ .references(() => users.id, { onDelete: "cascade" }),
+ url: text("url").notNull(),
+ status: text("status").notNull(),
+ attempts: integer("attempts").notNull().default(0),
+ lastAttemptAt: integer("lastAttemptAt"),
+ error: blob("error"),
+ createdAt: integer("createdAt").notNull(),
+ updatedAt: integer("updatedAt").notNull(),
+ },
+ (job) => ({
+ userIdx: index("jobs_userId_idx").on(job.userId),
+ statusIdx: index("jobs_status_idx").on(job.status),
+ createdAtIdx: index("jobs_createdAt_idx").on(job.createdAt),
+ urlIdx: index("jobs_url_idx").on(job.url),
+ }),
+);
+
+export type Job = typeof jobs.$inferSelect;