@lenso/storage 0.0.0-stage → 0.1.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,567 @@
1
+ import type { BunSQLDatabase } from "drizzle-orm/bun-sql";
2
+ import type { FileQueries, FileState } from "./files";
3
+ export declare const files: import("drizzle-orm/pg-core").PgTableWithColumns<{
4
+ name: "lenso_files";
5
+ schema: undefined;
6
+ columns: {
7
+ fileId: import("drizzle-orm/pg-core").PgColumn<{
8
+ name: "file_id";
9
+ tableName: "lenso_files";
10
+ dataType: "string";
11
+ columnType: "PgText";
12
+ data: string;
13
+ driverParam: string;
14
+ notNull: true;
15
+ hasDefault: false;
16
+ isPrimaryKey: true;
17
+ isAutoincrement: false;
18
+ hasRuntimeDefault: false;
19
+ enumValues: [string, ...string[]];
20
+ baseColumn: never;
21
+ identity: undefined;
22
+ generated: undefined;
23
+ }, {}, {}>;
24
+ storageId: import("drizzle-orm/pg-core").PgColumn<{
25
+ name: "storage_id";
26
+ tableName: "lenso_files";
27
+ dataType: "string";
28
+ columnType: "PgText";
29
+ data: string;
30
+ driverParam: string;
31
+ notNull: true;
32
+ hasDefault: false;
33
+ isPrimaryKey: false;
34
+ isAutoincrement: false;
35
+ hasRuntimeDefault: false;
36
+ enumValues: [string, ...string[]];
37
+ baseColumn: never;
38
+ identity: undefined;
39
+ generated: undefined;
40
+ }, {}, {}>;
41
+ objectKey: import("drizzle-orm/pg-core").PgColumn<{
42
+ name: "object_key";
43
+ tableName: "lenso_files";
44
+ dataType: "string";
45
+ columnType: "PgText";
46
+ data: string;
47
+ driverParam: string;
48
+ notNull: true;
49
+ hasDefault: false;
50
+ isPrimaryKey: false;
51
+ isAutoincrement: false;
52
+ hasRuntimeDefault: false;
53
+ enumValues: [string, ...string[]];
54
+ baseColumn: never;
55
+ identity: undefined;
56
+ generated: undefined;
57
+ }, {}, {}>;
58
+ filename: import("drizzle-orm/pg-core").PgColumn<{
59
+ name: "filename";
60
+ tableName: "lenso_files";
61
+ dataType: "string";
62
+ columnType: "PgText";
63
+ data: string;
64
+ driverParam: string;
65
+ notNull: true;
66
+ hasDefault: false;
67
+ isPrimaryKey: false;
68
+ isAutoincrement: false;
69
+ hasRuntimeDefault: false;
70
+ enumValues: [string, ...string[]];
71
+ baseColumn: never;
72
+ identity: undefined;
73
+ generated: undefined;
74
+ }, {}, {}>;
75
+ contentType: import("drizzle-orm/pg-core").PgColumn<{
76
+ name: "content_type";
77
+ tableName: "lenso_files";
78
+ dataType: "string";
79
+ columnType: "PgText";
80
+ data: string;
81
+ driverParam: string;
82
+ notNull: true;
83
+ hasDefault: false;
84
+ isPrimaryKey: false;
85
+ isAutoincrement: false;
86
+ hasRuntimeDefault: false;
87
+ enumValues: [string, ...string[]];
88
+ baseColumn: never;
89
+ identity: undefined;
90
+ generated: undefined;
91
+ }, {}, {}>;
92
+ ownerId: import("drizzle-orm/pg-core").PgColumn<{
93
+ name: "owner_id";
94
+ tableName: "lenso_files";
95
+ dataType: "string";
96
+ columnType: "PgText";
97
+ data: string;
98
+ driverParam: string;
99
+ notNull: false;
100
+ hasDefault: false;
101
+ isPrimaryKey: false;
102
+ isAutoincrement: false;
103
+ hasRuntimeDefault: false;
104
+ enumValues: [string, ...string[]];
105
+ baseColumn: never;
106
+ identity: undefined;
107
+ generated: undefined;
108
+ }, {}, {}>;
109
+ tenantId: import("drizzle-orm/pg-core").PgColumn<{
110
+ name: "tenant_id";
111
+ tableName: "lenso_files";
112
+ dataType: "string";
113
+ columnType: "PgText";
114
+ data: string;
115
+ driverParam: string;
116
+ notNull: false;
117
+ hasDefault: false;
118
+ isPrimaryKey: false;
119
+ isAutoincrement: false;
120
+ hasRuntimeDefault: false;
121
+ enumValues: [string, ...string[]];
122
+ baseColumn: never;
123
+ identity: undefined;
124
+ generated: undefined;
125
+ }, {}, {}>;
126
+ state: import("drizzle-orm/pg-core").PgColumn<{
127
+ name: "state";
128
+ tableName: "lenso_files";
129
+ dataType: "string";
130
+ columnType: "PgText";
131
+ data: FileState;
132
+ driverParam: string;
133
+ notNull: true;
134
+ hasDefault: false;
135
+ isPrimaryKey: false;
136
+ isAutoincrement: false;
137
+ hasRuntimeDefault: false;
138
+ enumValues: [string, ...string[]];
139
+ baseColumn: never;
140
+ identity: undefined;
141
+ generated: undefined;
142
+ }, {}, {
143
+ $type: FileState;
144
+ }>;
145
+ revision: import("drizzle-orm/pg-core").PgColumn<{
146
+ name: "revision";
147
+ tableName: "lenso_files";
148
+ dataType: "number";
149
+ columnType: "PgInteger";
150
+ data: number;
151
+ driverParam: string | number;
152
+ notNull: true;
153
+ hasDefault: false;
154
+ isPrimaryKey: false;
155
+ isAutoincrement: false;
156
+ hasRuntimeDefault: false;
157
+ enumValues: undefined;
158
+ baseColumn: never;
159
+ identity: undefined;
160
+ generated: undefined;
161
+ }, {}, {}>;
162
+ size: import("drizzle-orm/pg-core").PgColumn<{
163
+ name: "size";
164
+ tableName: "lenso_files";
165
+ dataType: "number";
166
+ columnType: "PgBigInt53";
167
+ data: number;
168
+ driverParam: string | number;
169
+ notNull: false;
170
+ hasDefault: false;
171
+ isPrimaryKey: false;
172
+ isAutoincrement: false;
173
+ hasRuntimeDefault: false;
174
+ enumValues: undefined;
175
+ baseColumn: never;
176
+ identity: undefined;
177
+ generated: undefined;
178
+ }, {}, {}>;
179
+ expectedSize: import("drizzle-orm/pg-core").PgColumn<{
180
+ name: "expected_size";
181
+ tableName: "lenso_files";
182
+ dataType: "number";
183
+ columnType: "PgBigInt53";
184
+ data: number;
185
+ driverParam: string | number;
186
+ notNull: false;
187
+ hasDefault: false;
188
+ isPrimaryKey: false;
189
+ isAutoincrement: false;
190
+ hasRuntimeDefault: false;
191
+ enumValues: undefined;
192
+ baseColumn: never;
193
+ identity: undefined;
194
+ generated: undefined;
195
+ }, {}, {}>;
196
+ maxBytes: import("drizzle-orm/pg-core").PgColumn<{
197
+ name: "max_bytes";
198
+ tableName: "lenso_files";
199
+ dataType: "number";
200
+ columnType: "PgBigInt53";
201
+ data: number;
202
+ driverParam: string | number;
203
+ notNull: false;
204
+ hasDefault: false;
205
+ isPrimaryKey: false;
206
+ isAutoincrement: false;
207
+ hasRuntimeDefault: false;
208
+ enumValues: undefined;
209
+ baseColumn: never;
210
+ identity: undefined;
211
+ generated: undefined;
212
+ }, {}, {}>;
213
+ etag: import("drizzle-orm/pg-core").PgColumn<{
214
+ name: "etag";
215
+ tableName: "lenso_files";
216
+ dataType: "string";
217
+ columnType: "PgText";
218
+ data: string;
219
+ driverParam: string;
220
+ notNull: false;
221
+ hasDefault: false;
222
+ isPrimaryKey: false;
223
+ isAutoincrement: false;
224
+ hasRuntimeDefault: false;
225
+ enumValues: [string, ...string[]];
226
+ baseColumn: never;
227
+ identity: undefined;
228
+ generated: undefined;
229
+ }, {}, {}>;
230
+ uploadExpiresAt: import("drizzle-orm/pg-core").PgColumn<{
231
+ name: "upload_expires_at";
232
+ tableName: "lenso_files";
233
+ dataType: "number";
234
+ columnType: "PgBigInt53";
235
+ data: number;
236
+ driverParam: string | number;
237
+ notNull: false;
238
+ hasDefault: false;
239
+ isPrimaryKey: false;
240
+ isAutoincrement: false;
241
+ hasRuntimeDefault: false;
242
+ enumValues: undefined;
243
+ baseColumn: never;
244
+ identity: undefined;
245
+ generated: undefined;
246
+ }, {}, {}>;
247
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
248
+ name: "created_at";
249
+ tableName: "lenso_files";
250
+ dataType: "number";
251
+ columnType: "PgBigInt53";
252
+ data: number;
253
+ driverParam: string | number;
254
+ notNull: true;
255
+ hasDefault: false;
256
+ isPrimaryKey: false;
257
+ isAutoincrement: false;
258
+ hasRuntimeDefault: false;
259
+ enumValues: undefined;
260
+ baseColumn: never;
261
+ identity: undefined;
262
+ generated: undefined;
263
+ }, {}, {}>;
264
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
265
+ name: "updated_at";
266
+ tableName: "lenso_files";
267
+ dataType: "number";
268
+ columnType: "PgBigInt53";
269
+ data: number;
270
+ driverParam: string | number;
271
+ notNull: true;
272
+ hasDefault: false;
273
+ isPrimaryKey: false;
274
+ isAutoincrement: false;
275
+ hasRuntimeDefault: false;
276
+ enumValues: undefined;
277
+ baseColumn: never;
278
+ identity: undefined;
279
+ generated: undefined;
280
+ }, {}, {}>;
281
+ };
282
+ dialect: 'pg';
283
+ }>;
284
+ export declare const fileSchema: {
285
+ files: import("drizzle-orm/pg-core").PgTableWithColumns<{
286
+ name: "lenso_files";
287
+ schema: undefined;
288
+ columns: {
289
+ fileId: import("drizzle-orm/pg-core").PgColumn<{
290
+ name: "file_id";
291
+ tableName: "lenso_files";
292
+ dataType: "string";
293
+ columnType: "PgText";
294
+ data: string;
295
+ driverParam: string;
296
+ notNull: true;
297
+ hasDefault: false;
298
+ isPrimaryKey: true;
299
+ isAutoincrement: false;
300
+ hasRuntimeDefault: false;
301
+ enumValues: [string, ...string[]];
302
+ baseColumn: never;
303
+ identity: undefined;
304
+ generated: undefined;
305
+ }, {}, {}>;
306
+ storageId: import("drizzle-orm/pg-core").PgColumn<{
307
+ name: "storage_id";
308
+ tableName: "lenso_files";
309
+ dataType: "string";
310
+ columnType: "PgText";
311
+ data: string;
312
+ driverParam: string;
313
+ notNull: true;
314
+ hasDefault: false;
315
+ isPrimaryKey: false;
316
+ isAutoincrement: false;
317
+ hasRuntimeDefault: false;
318
+ enumValues: [string, ...string[]];
319
+ baseColumn: never;
320
+ identity: undefined;
321
+ generated: undefined;
322
+ }, {}, {}>;
323
+ objectKey: import("drizzle-orm/pg-core").PgColumn<{
324
+ name: "object_key";
325
+ tableName: "lenso_files";
326
+ dataType: "string";
327
+ columnType: "PgText";
328
+ data: string;
329
+ driverParam: string;
330
+ notNull: true;
331
+ hasDefault: false;
332
+ isPrimaryKey: false;
333
+ isAutoincrement: false;
334
+ hasRuntimeDefault: false;
335
+ enumValues: [string, ...string[]];
336
+ baseColumn: never;
337
+ identity: undefined;
338
+ generated: undefined;
339
+ }, {}, {}>;
340
+ filename: import("drizzle-orm/pg-core").PgColumn<{
341
+ name: "filename";
342
+ tableName: "lenso_files";
343
+ dataType: "string";
344
+ columnType: "PgText";
345
+ data: string;
346
+ driverParam: string;
347
+ notNull: true;
348
+ hasDefault: false;
349
+ isPrimaryKey: false;
350
+ isAutoincrement: false;
351
+ hasRuntimeDefault: false;
352
+ enumValues: [string, ...string[]];
353
+ baseColumn: never;
354
+ identity: undefined;
355
+ generated: undefined;
356
+ }, {}, {}>;
357
+ contentType: import("drizzle-orm/pg-core").PgColumn<{
358
+ name: "content_type";
359
+ tableName: "lenso_files";
360
+ dataType: "string";
361
+ columnType: "PgText";
362
+ data: string;
363
+ driverParam: string;
364
+ notNull: true;
365
+ hasDefault: false;
366
+ isPrimaryKey: false;
367
+ isAutoincrement: false;
368
+ hasRuntimeDefault: false;
369
+ enumValues: [string, ...string[]];
370
+ baseColumn: never;
371
+ identity: undefined;
372
+ generated: undefined;
373
+ }, {}, {}>;
374
+ ownerId: import("drizzle-orm/pg-core").PgColumn<{
375
+ name: "owner_id";
376
+ tableName: "lenso_files";
377
+ dataType: "string";
378
+ columnType: "PgText";
379
+ data: string;
380
+ driverParam: string;
381
+ notNull: false;
382
+ hasDefault: false;
383
+ isPrimaryKey: false;
384
+ isAutoincrement: false;
385
+ hasRuntimeDefault: false;
386
+ enumValues: [string, ...string[]];
387
+ baseColumn: never;
388
+ identity: undefined;
389
+ generated: undefined;
390
+ }, {}, {}>;
391
+ tenantId: import("drizzle-orm/pg-core").PgColumn<{
392
+ name: "tenant_id";
393
+ tableName: "lenso_files";
394
+ dataType: "string";
395
+ columnType: "PgText";
396
+ data: string;
397
+ driverParam: string;
398
+ notNull: false;
399
+ hasDefault: false;
400
+ isPrimaryKey: false;
401
+ isAutoincrement: false;
402
+ hasRuntimeDefault: false;
403
+ enumValues: [string, ...string[]];
404
+ baseColumn: never;
405
+ identity: undefined;
406
+ generated: undefined;
407
+ }, {}, {}>;
408
+ state: import("drizzle-orm/pg-core").PgColumn<{
409
+ name: "state";
410
+ tableName: "lenso_files";
411
+ dataType: "string";
412
+ columnType: "PgText";
413
+ data: FileState;
414
+ driverParam: string;
415
+ notNull: true;
416
+ hasDefault: false;
417
+ isPrimaryKey: false;
418
+ isAutoincrement: false;
419
+ hasRuntimeDefault: false;
420
+ enumValues: [string, ...string[]];
421
+ baseColumn: never;
422
+ identity: undefined;
423
+ generated: undefined;
424
+ }, {}, {
425
+ $type: FileState;
426
+ }>;
427
+ revision: import("drizzle-orm/pg-core").PgColumn<{
428
+ name: "revision";
429
+ tableName: "lenso_files";
430
+ dataType: "number";
431
+ columnType: "PgInteger";
432
+ data: number;
433
+ driverParam: string | number;
434
+ notNull: true;
435
+ hasDefault: false;
436
+ isPrimaryKey: false;
437
+ isAutoincrement: false;
438
+ hasRuntimeDefault: false;
439
+ enumValues: undefined;
440
+ baseColumn: never;
441
+ identity: undefined;
442
+ generated: undefined;
443
+ }, {}, {}>;
444
+ size: import("drizzle-orm/pg-core").PgColumn<{
445
+ name: "size";
446
+ tableName: "lenso_files";
447
+ dataType: "number";
448
+ columnType: "PgBigInt53";
449
+ data: number;
450
+ driverParam: string | number;
451
+ notNull: false;
452
+ hasDefault: false;
453
+ isPrimaryKey: false;
454
+ isAutoincrement: false;
455
+ hasRuntimeDefault: false;
456
+ enumValues: undefined;
457
+ baseColumn: never;
458
+ identity: undefined;
459
+ generated: undefined;
460
+ }, {}, {}>;
461
+ expectedSize: import("drizzle-orm/pg-core").PgColumn<{
462
+ name: "expected_size";
463
+ tableName: "lenso_files";
464
+ dataType: "number";
465
+ columnType: "PgBigInt53";
466
+ data: number;
467
+ driverParam: string | number;
468
+ notNull: false;
469
+ hasDefault: false;
470
+ isPrimaryKey: false;
471
+ isAutoincrement: false;
472
+ hasRuntimeDefault: false;
473
+ enumValues: undefined;
474
+ baseColumn: never;
475
+ identity: undefined;
476
+ generated: undefined;
477
+ }, {}, {}>;
478
+ maxBytes: import("drizzle-orm/pg-core").PgColumn<{
479
+ name: "max_bytes";
480
+ tableName: "lenso_files";
481
+ dataType: "number";
482
+ columnType: "PgBigInt53";
483
+ data: number;
484
+ driverParam: string | number;
485
+ notNull: false;
486
+ hasDefault: false;
487
+ isPrimaryKey: false;
488
+ isAutoincrement: false;
489
+ hasRuntimeDefault: false;
490
+ enumValues: undefined;
491
+ baseColumn: never;
492
+ identity: undefined;
493
+ generated: undefined;
494
+ }, {}, {}>;
495
+ etag: import("drizzle-orm/pg-core").PgColumn<{
496
+ name: "etag";
497
+ tableName: "lenso_files";
498
+ dataType: "string";
499
+ columnType: "PgText";
500
+ data: string;
501
+ driverParam: string;
502
+ notNull: false;
503
+ hasDefault: false;
504
+ isPrimaryKey: false;
505
+ isAutoincrement: false;
506
+ hasRuntimeDefault: false;
507
+ enumValues: [string, ...string[]];
508
+ baseColumn: never;
509
+ identity: undefined;
510
+ generated: undefined;
511
+ }, {}, {}>;
512
+ uploadExpiresAt: import("drizzle-orm/pg-core").PgColumn<{
513
+ name: "upload_expires_at";
514
+ tableName: "lenso_files";
515
+ dataType: "number";
516
+ columnType: "PgBigInt53";
517
+ data: number;
518
+ driverParam: string | number;
519
+ notNull: false;
520
+ hasDefault: false;
521
+ isPrimaryKey: false;
522
+ isAutoincrement: false;
523
+ hasRuntimeDefault: false;
524
+ enumValues: undefined;
525
+ baseColumn: never;
526
+ identity: undefined;
527
+ generated: undefined;
528
+ }, {}, {}>;
529
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
530
+ name: "created_at";
531
+ tableName: "lenso_files";
532
+ dataType: "number";
533
+ columnType: "PgBigInt53";
534
+ data: number;
535
+ driverParam: string | number;
536
+ notNull: true;
537
+ hasDefault: false;
538
+ isPrimaryKey: false;
539
+ isAutoincrement: false;
540
+ hasRuntimeDefault: false;
541
+ enumValues: undefined;
542
+ baseColumn: never;
543
+ identity: undefined;
544
+ generated: undefined;
545
+ }, {}, {}>;
546
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
547
+ name: "updated_at";
548
+ tableName: "lenso_files";
549
+ dataType: "number";
550
+ columnType: "PgBigInt53";
551
+ data: number;
552
+ driverParam: string | number;
553
+ notNull: true;
554
+ hasDefault: false;
555
+ isPrimaryKey: false;
556
+ isAutoincrement: false;
557
+ hasRuntimeDefault: false;
558
+ enumValues: undefined;
559
+ baseColumn: never;
560
+ identity: undefined;
561
+ generated: undefined;
562
+ }, {}, {}>;
563
+ };
564
+ dialect: 'pg';
565
+ }>;
566
+ };
567
+ export declare function createPostgresFileQueries<TSchema extends Record<string, unknown>>(db: BunSQLDatabase<TSchema>): FileQueries;
@@ -0,0 +1,45 @@
1
+ // src/postgres.ts
2
+ import { and, eq, sql } from "drizzle-orm";
3
+ import { bigint, check, integer, pgTable, text, unique } from "drizzle-orm/pg-core";
4
+ var files = pgTable("lenso_files", {
5
+ fileId: text("file_id").primaryKey(),
6
+ storageId: text("storage_id").notNull(),
7
+ objectKey: text("object_key").notNull(),
8
+ filename: text("filename").notNull(),
9
+ contentType: text("content_type").notNull(),
10
+ ownerId: text("owner_id"),
11
+ tenantId: text("tenant_id"),
12
+ state: text("state").$type().notNull(),
13
+ revision: integer("revision").notNull(),
14
+ size: bigint("size", { mode: "number" }),
15
+ expectedSize: bigint("expected_size", { mode: "number" }),
16
+ maxBytes: bigint("max_bytes", { mode: "number" }),
17
+ etag: text("etag"),
18
+ uploadExpiresAt: bigint("upload_expires_at", { mode: "number" }),
19
+ createdAt: bigint("created_at", { mode: "number" }).notNull(),
20
+ updatedAt: bigint("updated_at", { mode: "number" }).notNull()
21
+ }, (table) => [
22
+ unique("lenso_files_storage_object_unique").on(table.storageId, table.objectKey),
23
+ check("lenso_files_state_check", sql`${table.state} IN ('pending','uploading','ready','failed','deleting','deleted')`)
24
+ ]);
25
+ var fileSchema = { files };
26
+ function createPostgresFileQueries(db) {
27
+ return {
28
+ async insert(file) {
29
+ await db.insert(files).values(file);
30
+ },
31
+ async get(fileId) {
32
+ const rows = await db.select().from(files).where(eq(files.fileId, fileId)).limit(1);
33
+ return rows[0] ?? null;
34
+ },
35
+ async transition(fileId, revision, next) {
36
+ const rows = await db.update(files).set(next).where(and(eq(files.fileId, fileId), eq(files.revision, revision))).returning({ fileId: files.fileId });
37
+ return rows.length === 1;
38
+ }
39
+ };
40
+ }
41
+ export {
42
+ createPostgresFileQueries,
43
+ fileSchema,
44
+ files
45
+ };
package/dist/r2.d.ts ADDED
@@ -0,0 +1,52 @@
1
+ import { type ObjectStorage } from "./index";
2
+ /** Structural subset of the native binding; no Workers globals are installed by this module. */
3
+ export interface R2StorageObject {
4
+ key: string;
5
+ size: number;
6
+ etag: string;
7
+ httpEtag: string;
8
+ version: string;
9
+ uploaded: Date;
10
+ httpMetadata?: {
11
+ contentType?: string;
12
+ };
13
+ customMetadata?: Record<string, string>;
14
+ body?: ReadableStream<Uint8Array>;
15
+ range?: {
16
+ offset?: number;
17
+ length?: number;
18
+ suffix?: number;
19
+ };
20
+ }
21
+ export interface R2StorageBinding {
22
+ put(key: string, body: ReadableStream<Uint8Array>, options: {
23
+ onlyIf: Headers;
24
+ httpMetadata: {
25
+ contentType: string;
26
+ };
27
+ customMetadata?: Record<string, string>;
28
+ }): Promise<R2StorageObject | null>;
29
+ get(key: string, options?: {
30
+ onlyIf?: Headers;
31
+ range?: {
32
+ offset: number;
33
+ length?: number;
34
+ };
35
+ }): Promise<R2StorageObject | null>;
36
+ head(key: string): Promise<R2StorageObject | null>;
37
+ delete(key: string): Promise<void>;
38
+ list(options?: {
39
+ prefix?: string;
40
+ cursor?: string;
41
+ limit?: number;
42
+ include?: ("httpMetadata" | "customMetadata")[];
43
+ }): Promise<{
44
+ objects: R2StorageObject[];
45
+ truncated: boolean;
46
+ cursor?: string;
47
+ }>;
48
+ }
49
+ export declare function createR2StoragePlugin(options: {
50
+ id: string;
51
+ binding: R2StorageBinding;
52
+ }): import("@lenso/core/plugin").Plugin<ObjectStorage>;