@queuebase/db 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/postgres/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,281 @@
1
+ import { sql } from "drizzle-orm";
2
+ import { boolean, index, integer, pgEnum, pgTable, text, timestamp, uniqueIndex, } from "drizzle-orm/pg-core";
3
+ // ─── Better Auth: Core Tables ────────────────────────────────────────────────
4
+ export const user = pgTable("user", {
5
+ id: text("id").primaryKey(),
6
+ name: text("name").notNull(),
7
+ email: text("email").notNull().unique(),
8
+ emailVerified: boolean("email_verified").notNull().default(false),
9
+ image: text("image"),
10
+ createdAt: timestamp("created_at", { withTimezone: true, mode: "date" })
11
+ .notNull()
12
+ .default(sql `now()`),
13
+ updatedAt: timestamp("updated_at", { withTimezone: true, mode: "date" })
14
+ .notNull()
15
+ .default(sql `now()`),
16
+ });
17
+ export const session = pgTable("session", {
18
+ id: text("id").primaryKey(),
19
+ userId: text("user_id")
20
+ .notNull()
21
+ .references(() => user.id, { onDelete: "cascade" }),
22
+ token: text("token").notNull().unique(),
23
+ expiresAt: timestamp("expires_at", { withTimezone: true, mode: "date" }).notNull(),
24
+ ipAddress: text("ip_address"),
25
+ userAgent: text("user_agent"),
26
+ activeOrganizationId: text("active_organization_id"),
27
+ createdAt: timestamp("created_at", { withTimezone: true, mode: "date" })
28
+ .notNull()
29
+ .default(sql `now()`),
30
+ updatedAt: timestamp("updated_at", { withTimezone: true, mode: "date" })
31
+ .notNull()
32
+ .default(sql `now()`),
33
+ });
34
+ export const account = pgTable("account", {
35
+ id: text("id").primaryKey(),
36
+ userId: text("user_id")
37
+ .notNull()
38
+ .references(() => user.id, { onDelete: "cascade" }),
39
+ accountId: text("account_id").notNull(),
40
+ providerId: text("provider_id").notNull(),
41
+ accessToken: text("access_token"),
42
+ refreshToken: text("refresh_token"),
43
+ accessTokenExpiresAt: timestamp("access_token_expires_at", {
44
+ withTimezone: true,
45
+ mode: "date",
46
+ }),
47
+ refreshTokenExpiresAt: timestamp("refresh_token_expires_at", {
48
+ withTimezone: true,
49
+ mode: "date",
50
+ }),
51
+ scope: text("scope"),
52
+ idToken: text("id_token"),
53
+ password: text("password"),
54
+ createdAt: timestamp("created_at", { withTimezone: true, mode: "date" })
55
+ .notNull()
56
+ .default(sql `now()`),
57
+ updatedAt: timestamp("updated_at", { withTimezone: true, mode: "date" })
58
+ .notNull()
59
+ .default(sql `now()`),
60
+ });
61
+ export const verification = pgTable("verification", {
62
+ id: text("id").primaryKey(),
63
+ identifier: text("identifier").notNull(),
64
+ value: text("value").notNull(),
65
+ expiresAt: timestamp("expires_at", { withTimezone: true, mode: "date" }).notNull(),
66
+ createdAt: timestamp("created_at", { withTimezone: true, mode: "date" })
67
+ .notNull()
68
+ .default(sql `now()`),
69
+ updatedAt: timestamp("updated_at", { withTimezone: true, mode: "date" })
70
+ .notNull()
71
+ .default(sql `now()`),
72
+ });
73
+ // ─── Better Auth: Organization Plugin Tables ─────────────────────────────────
74
+ export const organization = pgTable("organization", {
75
+ id: text("id").primaryKey(),
76
+ name: text("name").notNull(),
77
+ slug: text("slug").notNull().unique(),
78
+ logo: text("logo"),
79
+ metadata: text("metadata"),
80
+ createdAt: timestamp("created_at", { withTimezone: true, mode: "date" })
81
+ .notNull()
82
+ .default(sql `now()`),
83
+ });
84
+ export const member = pgTable("member", {
85
+ id: text("id").primaryKey(),
86
+ userId: text("user_id")
87
+ .notNull()
88
+ .references(() => user.id, { onDelete: "cascade" }),
89
+ organizationId: text("organization_id")
90
+ .notNull()
91
+ .references(() => organization.id, { onDelete: "cascade" }),
92
+ role: text("role").notNull().default("member"),
93
+ createdAt: timestamp("created_at", { withTimezone: true, mode: "date" })
94
+ .notNull()
95
+ .default(sql `now()`),
96
+ });
97
+ export const invitation = pgTable("invitation", {
98
+ id: text("id").primaryKey(),
99
+ email: text("email").notNull(),
100
+ inviterId: text("inviter_id")
101
+ .notNull()
102
+ .references(() => user.id, { onDelete: "cascade" }),
103
+ organizationId: text("organization_id")
104
+ .notNull()
105
+ .references(() => organization.id, { onDelete: "cascade" }),
106
+ role: text("role").notNull().default("member"),
107
+ status: text("status").notNull().default("pending"),
108
+ expiresAt: timestamp("expires_at", { withTimezone: true, mode: "date" }).notNull(),
109
+ createdAt: timestamp("created_at", { withTimezone: true, mode: "date" })
110
+ .notNull()
111
+ .default(sql `now()`),
112
+ });
113
+ // ─── App: Subscription + Usage Tables ────────────────────────────────────────
114
+ export const planEnum = pgEnum("plan", ["free", "pro"]);
115
+ export const subscriptionStatusEnum = pgEnum("subscription_status", [
116
+ "active",
117
+ "past_due",
118
+ "cancelled",
119
+ ]);
120
+ export const subscription = pgTable("subscription", {
121
+ id: integer("id").primaryKey().generatedAlwaysAsIdentity(),
122
+ organizationId: text("organization_id")
123
+ .notNull()
124
+ .references(() => organization.id, { onDelete: "cascade" })
125
+ .unique(),
126
+ plan: planEnum("plan").notNull().default("free"),
127
+ status: subscriptionStatusEnum("status").notNull().default("active"),
128
+ stripeCustomerId: text("stripe_customer_id").unique(),
129
+ stripeSubscriptionId: text("stripe_subscription_id").unique(),
130
+ stripePriceId: text("stripe_price_id"),
131
+ currentPeriodStart: timestamp("current_period_start", {
132
+ withTimezone: true,
133
+ mode: "date",
134
+ }),
135
+ currentPeriodEnd: timestamp("current_period_end", {
136
+ withTimezone: true,
137
+ mode: "date",
138
+ }),
139
+ cancelAtPeriodEnd: boolean("cancel_at_period_end").notNull().default(false),
140
+ createdAt: timestamp("created_at", { withTimezone: true, mode: "date" })
141
+ .notNull()
142
+ .default(sql `now()`),
143
+ updatedAt: timestamp("updated_at", { withTimezone: true, mode: "date" })
144
+ .notNull()
145
+ .default(sql `now()`),
146
+ });
147
+ export const usage = pgTable("usage", {
148
+ id: integer("id").primaryKey().generatedAlwaysAsIdentity(),
149
+ organizationId: text("organization_id")
150
+ .notNull()
151
+ .references(() => organization.id, { onDelete: "cascade" }),
152
+ periodStart: timestamp("period_start", {
153
+ withTimezone: true,
154
+ mode: "date",
155
+ }).notNull(),
156
+ jobsEnqueued: integer("jobs_enqueued").notNull().default(0),
157
+ }, (table) => [
158
+ uniqueIndex("idx_usage_org_period").on(table.organizationId, table.periodStart),
159
+ ]);
160
+ // ─── App: Project Table ──────────────────────────────────────────────────────
161
+ export const project = pgTable("project", {
162
+ id: integer("id").primaryKey().generatedAlwaysAsIdentity(),
163
+ publicId: text("public_id").notNull(),
164
+ name: text("name").notNull(),
165
+ organizationId: text("organization_id")
166
+ .notNull()
167
+ .references(() => organization.id, { onDelete: "cascade" }),
168
+ apiKey: text("api_key").notNull(),
169
+ webhookSecret: text("webhook_secret").notNull(),
170
+ callbackUrl: text("callback_url"),
171
+ createdAt: timestamp("created_at", { withTimezone: true, mode: "date" })
172
+ .notNull()
173
+ .default(sql `now()`),
174
+ updatedAt: timestamp("updated_at", { withTimezone: true, mode: "date" })
175
+ .notNull()
176
+ .default(sql `now()`),
177
+ }, (table) => [
178
+ uniqueIndex("idx_project_public_id").on(table.publicId),
179
+ index("idx_project_organization_id").on(table.organizationId),
180
+ uniqueIndex("idx_project_api_key").on(table.apiKey),
181
+ uniqueIndex("idx_project_webhook_secret").on(table.webhookSecret),
182
+ ]);
183
+ export const jobStatusEnum = pgEnum("job_status", [
184
+ "pending",
185
+ "running",
186
+ "completed",
187
+ "failed",
188
+ "cancelled",
189
+ ]);
190
+ export const jobLogEventEnum = pgEnum("job_log_event", [
191
+ "enqueued",
192
+ "started",
193
+ "completed",
194
+ "failed",
195
+ "retrying",
196
+ "cancelled",
197
+ ]);
198
+ export const jobLogSourceEnum = pgEnum("job_log_source", [
199
+ "system",
200
+ "user",
201
+ ]);
202
+ export const backoffStrategyEnum = pgEnum("backoff_strategy", [
203
+ "linear",
204
+ "exponential",
205
+ ]);
206
+ export const jobs = pgTable("jobs", {
207
+ id: integer("id").primaryKey().generatedAlwaysAsIdentity(),
208
+ publicId: text("public_id").notNull(),
209
+ name: text("name").notNull(),
210
+ payload: text("payload").notNull(), // JSON stored as text
211
+ status: jobStatusEnum("status").notNull().default("pending"),
212
+ attempt: integer("attempt").notNull().default(1),
213
+ maxAttempts: integer("max_attempts").notNull().default(1),
214
+ runAt: timestamp("run_at", { withTimezone: true, mode: "date" }).notNull(),
215
+ createdAt: timestamp("created_at", { withTimezone: true, mode: "date" })
216
+ .notNull()
217
+ .default(sql `now()`),
218
+ startedAt: timestamp("started_at", { withTimezone: true, mode: "date" }),
219
+ completedAt: timestamp("completed_at", {
220
+ withTimezone: true,
221
+ mode: "date",
222
+ }),
223
+ result: text("result"), // JSON stored as text
224
+ error: text("error"),
225
+ backoffStrategy: backoffStrategyEnum("backoff_strategy")
226
+ .notNull()
227
+ .default("exponential"),
228
+ backoffDelay: integer("backoff_delay").notNull().default(1000),
229
+ callbackUrl: text("callback_url").notNull(),
230
+ // Production-specific fields
231
+ projectId: integer("project_id").notNull(),
232
+ }, (table) => [
233
+ uniqueIndex("idx_jobs_public_id").on(table.publicId),
234
+ index("idx_jobs_status_run_at").on(table.status, table.runAt),
235
+ index("idx_jobs_name").on(table.name),
236
+ index("idx_jobs_project_id").on(table.projectId),
237
+ ]);
238
+ // ─── App: Job Logs ──────────────────────────────────────────────────────────
239
+ export const jobLogs = pgTable("job_logs", {
240
+ id: integer("id").primaryKey().generatedAlwaysAsIdentity(),
241
+ jobId: integer("job_id")
242
+ .notNull()
243
+ .references(() => jobs.id, { onDelete: "cascade" }),
244
+ projectId: integer("project_id").notNull(),
245
+ event: jobLogEventEnum("event").notNull(),
246
+ source: jobLogSourceEnum("source").notNull().default("system"),
247
+ metadata: text("metadata"),
248
+ createdAt: timestamp("created_at", { withTimezone: true, mode: "date" })
249
+ .notNull()
250
+ .default(sql `now()`),
251
+ }, (table) => [
252
+ index("idx_job_logs_job_id").on(table.jobId),
253
+ index("idx_job_logs_project_id").on(table.projectId),
254
+ index("idx_job_logs_created_at").on(table.createdAt),
255
+ ]);
256
+ // ─── App: Audit Logs ────────────────────────────────────────────────────────
257
+ export const auditLogs = pgTable("audit_logs", {
258
+ id: integer("id").primaryKey().generatedAlwaysAsIdentity(),
259
+ organizationId: text("organization_id")
260
+ .notNull()
261
+ .references(() => organization.id, { onDelete: "cascade" }),
262
+ actorId: text("actor_id")
263
+ .notNull()
264
+ .references(() => user.id, { onDelete: "cascade" }),
265
+ event: text("event").notNull(),
266
+ metadata: text("metadata"),
267
+ createdAt: timestamp("created_at", { withTimezone: true, mode: "date" })
268
+ .notNull()
269
+ .default(sql `now()`),
270
+ }, (table) => [
271
+ index("idx_audit_logs_organization_id").on(table.organizationId),
272
+ index("idx_audit_logs_created_at").on(table.createdAt),
273
+ ]);
274
+ // ─── App: Cron Locks ────────────────────────────────────────────────────────
275
+ export const cronLocks = pgTable("cron_locks", {
276
+ taskName: text("task_name").primaryKey(),
277
+ lockedUntil: timestamp("locked_until", { withTimezone: true, mode: "date" })
278
+ .notNull()
279
+ .default(sql `now()`),
280
+ });
281
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/postgres/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type BetterSQLite3Database } from 'drizzle-orm/better-sqlite3';
2
+ import * as schema from './schema.js';
3
+ export type DbSchema = typeof schema;
4
+ export type SqliteDb = BetterSQLite3Database<DbSchema>;
5
+ export declare function createSqliteClient(filename: string): {
6
+ db: SqliteDb;
7
+ close: () => void;
8
+ };
9
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/sqlite/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAW,MAAM,4BAA4B,CAAC;AACjF,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAItC,MAAM,MAAM,QAAQ,GAAG,OAAO,MAAM,CAAC;AACrC,MAAM,MAAM,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAEvD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,IAAI,CAAA;CAAE,CAcxF"}
@@ -0,0 +1,17 @@
1
+ import { createRequire } from 'node:module';
2
+ import { drizzle } from 'drizzle-orm/better-sqlite3';
3
+ import * as schema from './schema.js';
4
+ const require = createRequire(import.meta.url);
5
+ export function createSqliteClient(filename) {
6
+ // Dynamic require to avoid bundling better-sqlite3 when not needed
7
+ const Database = require('better-sqlite3');
8
+ const sqlite = new Database(filename);
9
+ // Enable WAL mode for better concurrent performance
10
+ sqlite.pragma('journal_mode = WAL');
11
+ const db = drizzle(sqlite, { schema });
12
+ return {
13
+ db,
14
+ close: () => sqlite.close(),
15
+ };
16
+ }
17
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/sqlite/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAA8B,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAK/C,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,mEAAmE;IACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEtC,oDAAoD;IACpD,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAEpC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAEvC,OAAO;QACL,EAAE;QACF,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;KAC5B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { createSqliteClient, type SqliteDb, type DbSchema } from './client.js';
2
+ export { runMigrations } from './migrations.js';
3
+ export { jobs, type Job, type NewJob, jobLogs, type JobLog, type NewJobLog } from './schema.js';
4
+ export { eq, and, or, sql, desc, asc } from 'drizzle-orm';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sqlite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,EAAE,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { createSqliteClient } from './client.js';
2
+ export { runMigrations } from './migrations.js';
3
+ export { jobs, jobLogs } from './schema.js';
4
+ export { eq, and, or, sql, desc, asc } from 'drizzle-orm';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sqlite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAgC,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAyB,OAAO,EAA+B,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { SqliteDb } from './client.js';
2
+ /**
3
+ * Run migrations for SQLite database
4
+ * For local dev, we use a simple schema push approach
5
+ */
6
+ export declare function runMigrations(db: SqliteDb): void;
7
+ //# sourceMappingURL=migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/sqlite/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAiDhD"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Run migrations for SQLite database
3
+ * For local dev, we use a simple schema push approach
4
+ */
5
+ export function runMigrations(db) {
6
+ db.run(`
7
+ CREATE TABLE IF NOT EXISTS jobs (
8
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
9
+ public_id TEXT NOT NULL UNIQUE,
10
+ name TEXT NOT NULL,
11
+ payload TEXT NOT NULL,
12
+ status TEXT NOT NULL DEFAULT 'pending',
13
+ attempt INTEGER NOT NULL DEFAULT 1,
14
+ max_attempts INTEGER NOT NULL DEFAULT 1,
15
+ run_at INTEGER NOT NULL,
16
+ created_at INTEGER NOT NULL DEFAULT (unixepoch() * 1000),
17
+ started_at INTEGER,
18
+ completed_at INTEGER,
19
+ result TEXT,
20
+ error TEXT,
21
+ backoff_strategy TEXT NOT NULL DEFAULT 'exponential',
22
+ backoff_delay INTEGER NOT NULL DEFAULT 1000,
23
+ callback_url TEXT NOT NULL
24
+ )
25
+ `);
26
+ // Index for polling pending jobs
27
+ db.run(`
28
+ CREATE INDEX IF NOT EXISTS idx_jobs_status_run_at
29
+ ON jobs(status, run_at)
30
+ `);
31
+ // Index for querying by name
32
+ db.run(`
33
+ CREATE INDEX IF NOT EXISTS idx_jobs_name
34
+ ON jobs(name)
35
+ `);
36
+ db.run(`
37
+ CREATE TABLE IF NOT EXISTS job_logs (
38
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
39
+ job_id INTEGER NOT NULL REFERENCES jobs(id) ON DELETE CASCADE,
40
+ event TEXT NOT NULL,
41
+ source TEXT NOT NULL DEFAULT 'system',
42
+ metadata TEXT,
43
+ created_at INTEGER NOT NULL DEFAULT (unixepoch() * 1000)
44
+ )
45
+ `);
46
+ db.run(`
47
+ CREATE INDEX IF NOT EXISTS idx_job_logs_job_id
48
+ ON job_logs(job_id)
49
+ `);
50
+ }
51
+ //# sourceMappingURL=migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/sqlite/migrations.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,EAAY;IACxC,EAAE,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;GAmBN,CAAC,CAAC;IAEH,iCAAiC;IACjC,EAAE,CAAC,GAAG,CAAC;;;GAGN,CAAC,CAAC;IAEH,6BAA6B;IAC7B,EAAE,CAAC,GAAG,CAAC;;;GAGN,CAAC,CAAC;IAEH,EAAE,CAAC,GAAG,CAAC;;;;;;;;;GASN,CAAC,CAAC;IAEH,EAAE,CAAC,GAAG,CAAC;;;GAGN,CAAC,CAAC;AACL,CAAC"}