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