automindy commited on
Commit
31fb0af
·
verified ·
1 Parent(s): 5569a86

Upload 603 files

Browse files
server/dist/db/client.d.ts CHANGED
@@ -20,7 +20,7 @@ export interface TursoDb {
20
  /** Execute a single statement (like .prepare(sql).run(args)). Returns { changes, lastInsertRowid }. */
21
  run(sql: string, args?: any[]): Promise<{
22
  changes: number;
23
- lastInsertRowid: bigint | number;
24
  }>;
25
  /** Execute a single statement and return the first row (like .prepare(sql).get(args)). */
26
  get<T = any>(sql: string, args?: any[]): Promise<T | undefined>;
 
20
  /** Execute a single statement (like .prepare(sql).run(args)). Returns { changes, lastInsertRowid }. */
21
  run(sql: string, args?: any[]): Promise<{
22
  changes: number;
23
+ lastInsertRowid: number;
24
  }>;
25
  /** Execute a single statement and return the first row (like .prepare(sql).get(args)). */
26
  get<T = any>(sql: string, args?: any[]): Promise<T | undefined>;
server/dist/db/client.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAgB,KAAK,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAEvG,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACvD,uGAAuG;IACvG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/F,0FAA0F;IAC1F,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAChE,qFAAqF;IACrF,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACtD,yDAAyD;IACzD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,+EAA+E;IAC/E,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;CACxD;AA+CD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAWhD;AAED,uEAAuE;AACvE,wBAAgB,KAAK,IAAI,OAAO,CAK/B;AAGD,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC"}
 
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAAgB,KAAK,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAEvG,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACvD,uGAAuG;IACvG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtF,0FAA0F;IAC1F,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAChE,qFAAqF;IACrF,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACtD,yDAAyD;IACzD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,+EAA+E;IAC/E,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;CACxD;AA+CD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAwBhD;AAED,uEAAuE;AACvE,wBAAgB,KAAK,IAAI,OAAO,CAK/B;AAGD,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC"}
server/dist/db/client.js CHANGED
@@ -12,6 +12,8 @@
12
  * db.transaction(() => { ... })() → await db.batch([...])
13
  * db.pragma(...) → await db.run('PRAGMA ...')
14
  */
 
 
15
  import { createClient } from '@libsql/client';
16
  let db = null;
17
  function createTursoDb(client) {
@@ -24,7 +26,7 @@ function createTursoDb(client) {
24
  const result = await client.execute({ sql, args });
25
  return {
26
  changes: result.rowsAffected,
27
- lastInsertRowid: result.lastInsertRowid ?? 0,
28
  };
29
  },
30
  async get(sql, args = []) {
@@ -58,6 +60,16 @@ function createTursoDb(client) {
58
  */
59
  export function initClient(url) {
60
  const dbUrl = url ?? process.env.TURSO_DATABASE_URL ?? 'file:./data/freeapi.db';
 
 
 
 
 
 
 
 
 
 
61
  const authToken = process.env.TURSO_AUTH_TOKEN;
62
  const client = createClient({
63
  url: dbUrl,
 
12
  * db.transaction(() => { ... })() → await db.batch([...])
13
  * db.pragma(...) → await db.run('PRAGMA ...')
14
  */
15
+ import fs from 'fs';
16
+ import path from 'path';
17
  import { createClient } from '@libsql/client';
18
  let db = null;
19
  function createTursoDb(client) {
 
26
  const result = await client.execute({ sql, args });
27
  return {
28
  changes: result.rowsAffected,
29
+ lastInsertRowid: result.lastInsertRowid !== undefined ? Number(result.lastInsertRowid) : 0,
30
  };
31
  },
32
  async get(sql, args = []) {
 
60
  */
61
  export function initClient(url) {
62
  const dbUrl = url ?? process.env.TURSO_DATABASE_URL ?? 'file:./data/freeapi.db';
63
+ if (process.env.NODE_ENV === 'production' && !process.env.TURSO_DATABASE_URL && !url) {
64
+ console.warn('\n[WARNING] TURSO_DATABASE_URL is not set in production. Falling back to local SQLite database. Any changes will be lost when the container restarts!\n');
65
+ }
66
+ if (dbUrl.startsWith('file:')) {
67
+ const filePath = dbUrl.slice(5);
68
+ const dir = path.dirname(filePath);
69
+ if (!fs.existsSync(dir)) {
70
+ fs.mkdirSync(dir, { recursive: true });
71
+ }
72
+ }
73
  const authToken = process.env.TURSO_AUTH_TOKEN;
74
  const client = createClient({
75
  url: dbUrl,
server/dist/db/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAA2D,MAAM,gBAAgB,CAAC;AAkBvG,IAAI,EAAE,GAAmB,IAAI,CAAC;AAE9B,SAAS,aAAa,CAAC,MAAc;IACnC,OAAO;QACL,MAAM;QAEN,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,OAAc,EAAE;YACzC,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,OAAc,EAAE;YACrC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,YAAY;gBAC5B,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,CAAC;aAC7C,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,GAAG,CAAU,GAAW,EAAE,OAAc,EAAE;YAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,OAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAO,IAAI,SAAS,CAAC;QAC5C,CAAC;QAED,KAAK,CAAC,GAAG,CAAU,GAAW,EAAE,OAAc,EAAE;YAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,OAAO,MAAM,CAAC,IAAW,CAAC;QAC5B,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,GAAW;YACzB,MAAM,UAAU,GAAG,GAAG;iBACnB,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC7B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,UAAyB;YACnC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YACvC,OAAO,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,MAAM,KAAK,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,wBAAwB,CAAC;IAChF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAE/C,MAAM,MAAM,GAAG,YAAY,CAAC;QAC1B,GAAG,EAAE,KAAK;QACV,SAAS,EAAE,SAAS,IAAI,SAAS;KAClC,CAAC,CAAC;IAEH,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,KAAK;IACnB,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
 
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"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"}
server/src/db/client.ts CHANGED
@@ -13,6 +13,8 @@
13
  * db.pragma(...) → await db.run('PRAGMA ...')
14
  */
15
 
 
 
16
  import { createClient, type Client, type InStatement, type ResultSet, type Row } from '@libsql/client';
17
 
18
  export interface TursoDb {
@@ -20,7 +22,7 @@ export interface TursoDb {
20
  /** Execute a single statement, return full result set. */
21
  execute(sql: string, args?: any[]): Promise<ResultSet>;
22
  /** Execute a single statement (like .prepare(sql).run(args)). Returns { changes, lastInsertRowid }. */
23
- run(sql: string, args?: any[]): Promise<{ changes: number; lastInsertRowid: bigint | number }>;
24
  /** Execute a single statement and return the first row (like .prepare(sql).get(args)). */
25
  get<T = any>(sql: string, args?: any[]): Promise<T | undefined>;
26
  /** Execute a single statement and return all rows (like .prepare(sql).all(args)). */
@@ -45,7 +47,7 @@ function createTursoDb(client: Client): TursoDb {
45
  const result = await client.execute({ sql, args });
46
  return {
47
  changes: result.rowsAffected,
48
- lastInsertRowid: result.lastInsertRowid ?? 0,
49
  };
50
  },
51
 
@@ -83,6 +85,19 @@ function createTursoDb(client: Client): TursoDb {
83
  */
84
  export function initClient(url?: string): TursoDb {
85
  const dbUrl = url ?? process.env.TURSO_DATABASE_URL ?? 'file:./data/freeapi.db';
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  const authToken = process.env.TURSO_AUTH_TOKEN;
87
 
88
  const client = createClient({
 
13
  * db.pragma(...) → await db.run('PRAGMA ...')
14
  */
15
 
16
+ import fs from 'fs';
17
+ import path from 'path';
18
  import { createClient, type Client, type InStatement, type ResultSet, type Row } from '@libsql/client';
19
 
20
  export interface TursoDb {
 
22
  /** Execute a single statement, return full result set. */
23
  execute(sql: string, args?: any[]): Promise<ResultSet>;
24
  /** Execute a single statement (like .prepare(sql).run(args)). Returns { changes, lastInsertRowid }. */
25
+ run(sql: string, args?: any[]): Promise<{ changes: number; lastInsertRowid: number }>;
26
  /** Execute a single statement and return the first row (like .prepare(sql).get(args)). */
27
  get<T = any>(sql: string, args?: any[]): Promise<T | undefined>;
28
  /** Execute a single statement and return all rows (like .prepare(sql).all(args)). */
 
47
  const result = await client.execute({ sql, args });
48
  return {
49
  changes: result.rowsAffected,
50
+ lastInsertRowid: result.lastInsertRowid !== undefined ? Number(result.lastInsertRowid) : 0,
51
  };
52
  },
53
 
 
85
  */
86
  export function initClient(url?: string): TursoDb {
87
  const dbUrl = url ?? process.env.TURSO_DATABASE_URL ?? 'file:./data/freeapi.db';
88
+
89
+ if (process.env.NODE_ENV === 'production' && !process.env.TURSO_DATABASE_URL && !url) {
90
+ console.warn('\n[WARNING] TURSO_DATABASE_URL is not set in production. Falling back to local SQLite database. Any changes will be lost when the container restarts!\n');
91
+ }
92
+
93
+ if (dbUrl.startsWith('file:')) {
94
+ const filePath = dbUrl.slice(5);
95
+ const dir = path.dirname(filePath);
96
+ if (!fs.existsSync(dir)) {
97
+ fs.mkdirSync(dir, { recursive: true });
98
+ }
99
+ }
100
+
101
  const authToken = process.env.TURSO_AUTH_TOKEN;
102
 
103
  const client = createClient({