tinybase 9.5.0 → 9.6.0-beta.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.
- package/@types/omni/index.d.ts +4 -0
- package/@types/omni/with-schemas/index.d.ts +4 -0
- package/@types/persisters/index.d.ts +8 -1
- package/@types/persisters/persister-better-sqlite3/index.d.ts +178 -0
- package/@types/persisters/persister-better-sqlite3/with-schemas/index.d.ts +202 -0
- package/@types/persisters/persister-capacitor-sqlite/index.d.ts +181 -0
- package/@types/persisters/persister-capacitor-sqlite/with-schemas/index.d.ts +205 -0
- package/@types/persisters/persister-indexed-db/index.d.ts +17 -9
- package/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +18 -10
- package/@types/persisters/persister-libsql/index.d.ts +27 -0
- package/@types/persisters/persister-libsql/with-schemas/index.d.ts +27 -0
- package/@types/persisters/persister-pg/index.d.ts +197 -0
- package/@types/persisters/persister-pg/with-schemas/index.d.ts +222 -0
- package/@types/persisters/persister-supabase/index.d.ts +201 -0
- package/@types/persisters/persister-supabase/with-schemas/index.d.ts +217 -0
- package/@types/persisters/with-schemas/index.d.ts +8 -1
- package/@types/ui-react-dom/index.d.ts +10 -10
- package/@types/ui-react-dom/with-schemas/index.d.ts +10 -10
- package/@types/ui-react-dom-charts/index.d.ts +7 -7
- package/@types/ui-react-dom-charts/with-schemas/index.d.ts +7 -7
- package/@types/ui-react-inspector/index.d.ts +1 -1
- package/@types/ui-react-inspector/with-schemas/index.d.ts +1 -1
- package/@types/ui-solid-dom/index.d.ts +10 -10
- package/@types/ui-solid-dom/with-schemas/index.d.ts +10 -10
- package/@types/ui-solid-inspector/index.d.ts +1 -1
- package/@types/ui-solid-inspector/with-schemas/index.d.ts +1 -1
- package/@types/ui-svelte-dom/index.d.ts +10 -10
- package/@types/ui-svelte-dom/with-schemas/index.d.ts +10 -10
- package/@types/ui-svelte-inspector/index.d.ts +1 -1
- package/@types/ui-svelte-inspector/with-schemas/index.d.ts +1 -1
- package/agents.md +55 -2
- package/min/omni/index.js +1 -1
- package/min/omni/index.js.gz +0 -0
- package/min/omni/with-schemas/index.js +1 -1
- package/min/omni/with-schemas/index.js.gz +0 -0
- package/min/persisters/index.js +1 -1
- package/min/persisters/index.js.gz +0 -0
- package/min/persisters/persister-better-sqlite3/index.js +1 -0
- package/min/persisters/persister-better-sqlite3/index.js.gz +0 -0
- package/min/persisters/persister-better-sqlite3/with-schemas/index.js +1 -0
- package/min/persisters/persister-better-sqlite3/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-capacitor-sqlite/index.js +1 -0
- package/min/persisters/persister-capacitor-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-capacitor-sqlite/with-schemas/index.js +1 -0
- package/min/persisters/persister-capacitor-sqlite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-sql-storage/index.js +1 -1
- package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
- package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/index.js +1 -1
- package/min/persisters/persister-electric-sql/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
- package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/index.js +1 -1
- package/min/persisters/persister-indexed-db/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
- package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-libsql/index.js +1 -1
- package/min/persisters/persister-libsql/index.js.gz +0 -0
- package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
- package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-pg/index.js +1 -0
- package/min/persisters/persister-pg/index.js.gz +0 -0
- package/min/persisters/persister-pg/with-schemas/index.js +1 -0
- package/min/persisters/persister-pg/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-pglite/index.js +1 -1
- package/min/persisters/persister-pglite/index.js.gz +0 -0
- package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
- package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-postgres/index.js +1 -1
- package/min/persisters/persister-postgres/index.js.gz +0 -0
- package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
- package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-powersync/index.js +1 -1
- package/min/persisters/persister-powersync/index.js.gz +0 -0
- package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
- package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-react-native-sqlite/index.js +1 -1
- package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -1
- package/min/persisters/persister-react-native-sqlite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/index.js +1 -1
- package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/index.js +1 -1
- package/min/persisters/persister-sqlite3/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-supabase/index.js +1 -0
- package/min/persisters/persister-supabase/index.js.gz +0 -0
- package/min/persisters/persister-supabase/with-schemas/index.js +1 -0
- package/min/persisters/persister-supabase/with-schemas/index.js.gz +0 -0
- package/min/persisters/with-schemas/index.js +1 -1
- package/min/persisters/with-schemas/index.js.gz +0 -0
- package/omni/index.js +269 -34
- package/omni/with-schemas/index.js +269 -34
- package/package.json +164 -4
- package/persisters/index.js +23 -7
- package/persisters/persister-better-sqlite3/index.js +1767 -0
- package/persisters/persister-better-sqlite3/with-schemas/index.js +1767 -0
- package/persisters/persister-capacitor-sqlite/index.js +1769 -0
- package/persisters/persister-capacitor-sqlite/with-schemas/index.js +1769 -0
- package/persisters/persister-cr-sqlite-wasm/index.js +20 -6
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +20 -6
- package/persisters/persister-durable-object-sql-storage/index.js +20 -7
- package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +20 -7
- package/persisters/persister-electric-sql/index.js +20 -6
- package/persisters/persister-electric-sql/with-schemas/index.js +20 -6
- package/persisters/persister-expo-sqlite/index.js +20 -6
- package/persisters/persister-expo-sqlite/with-schemas/index.js +20 -6
- package/persisters/persister-indexed-db/index.js +48 -20
- package/persisters/persister-indexed-db/with-schemas/index.js +48 -20
- package/persisters/persister-libsql/index.js +20 -6
- package/persisters/persister-libsql/with-schemas/index.js +20 -6
- package/persisters/persister-pg/index.js +1905 -0
- package/persisters/persister-pg/with-schemas/index.js +1905 -0
- package/persisters/persister-pglite/index.js +20 -6
- package/persisters/persister-pglite/with-schemas/index.js +20 -6
- package/persisters/persister-postgres/index.js +20 -6
- package/persisters/persister-postgres/with-schemas/index.js +20 -6
- package/persisters/persister-powersync/index.js +27 -10
- package/persisters/persister-powersync/with-schemas/index.js +27 -10
- package/persisters/persister-react-native-sqlite/index.js +20 -6
- package/persisters/persister-react-native-sqlite/with-schemas/index.js +20 -6
- package/persisters/persister-sqlite-bun/index.js +20 -6
- package/persisters/persister-sqlite-bun/with-schemas/index.js +20 -6
- package/persisters/persister-sqlite-wasm/index.js +20 -6
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +20 -6
- package/persisters/persister-sqlite3/index.js +20 -6
- package/persisters/persister-sqlite3/with-schemas/index.js +20 -6
- package/persisters/persister-supabase/index.js +883 -0
- package/persisters/persister-supabase/with-schemas/index.js +883 -0
- package/persisters/with-schemas/index.js +23 -7
- package/readme.md +14 -14
- package/releases.md +163 -66
|
@@ -250,9 +250,10 @@ const escapeId = (str) =>
|
|
|
250
250
|
const escapeIds = (...ids) => escapeId(arrayJoin(ids, '_'));
|
|
251
251
|
const escapeColumnNames = (...columnNames) =>
|
|
252
252
|
arrayJoin(arrayMap(columnNames, escapeId), COMMA);
|
|
253
|
-
const
|
|
253
|
+
const numberedPlaceholder = (offset) => '$' + offset[0]++;
|
|
254
|
+
const getPlaceholders = (array, getPlaceholder, offset = [1]) =>
|
|
254
255
|
arrayJoin(
|
|
255
|
-
arrayMap(array, () =>
|
|
256
|
+
arrayMap(array, () => getPlaceholder(offset)),
|
|
256
257
|
COMMA,
|
|
257
258
|
);
|
|
258
259
|
const getWhereCondition = (tableName, condition = TRUE) =>
|
|
@@ -995,6 +996,7 @@ const getCommandFunctions = (
|
|
|
995
996
|
managedTableNames,
|
|
996
997
|
querySchema,
|
|
997
998
|
columnType,
|
|
999
|
+
getPlaceholder,
|
|
998
1000
|
upsert = defaultUpsert,
|
|
999
1001
|
encode,
|
|
1000
1002
|
decode,
|
|
@@ -1205,7 +1207,7 @@ const getCommandFunctions = (
|
|
|
1205
1207
|
DELETE_FROM +
|
|
1206
1208
|
escapeId(tableName) +
|
|
1207
1209
|
getWhereCondition(tableName, condition) +
|
|
1208
|
-
`AND(${escapeId(rowIdColumnName)}=$1)`,
|
|
1210
|
+
`AND(${escapeId(rowIdColumnName)}=${getPlaceholder([1])})`,
|
|
1209
1211
|
[rowId],
|
|
1210
1212
|
);
|
|
1211
1213
|
} else if (!isEmpty(settingColumnNames)) {
|
|
@@ -1224,6 +1226,7 @@ const getCommandFunctions = (
|
|
|
1224
1226
|
encode ? encode(row[cellId]) : row[cellId],
|
|
1225
1227
|
),
|
|
1226
1228
|
},
|
|
1229
|
+
getPlaceholder,
|
|
1227
1230
|
currentColumnNames,
|
|
1228
1231
|
);
|
|
1229
1232
|
}
|
|
@@ -1257,13 +1260,14 @@ const getCommandFunctions = (
|
|
|
1257
1260
|
rowIdColumnName,
|
|
1258
1261
|
changingColumnNames,
|
|
1259
1262
|
rows,
|
|
1263
|
+
getPlaceholder,
|
|
1260
1264
|
currentColumnNames,
|
|
1261
1265
|
);
|
|
1262
1266
|
await executeCommand(
|
|
1263
1267
|
DELETE_FROM +
|
|
1264
1268
|
escapeId(tableName) +
|
|
1265
1269
|
getWhereCondition(tableName, condition) + // eslint-disable-next-line max-len
|
|
1266
|
-
`AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds)})`,
|
|
1270
|
+
`AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds, getPlaceholder)})`,
|
|
1267
1271
|
deleteRowIds,
|
|
1268
1272
|
);
|
|
1269
1273
|
} else if (
|
|
@@ -1306,6 +1310,7 @@ const defaultUpsert = async (
|
|
|
1306
1310
|
rowIdColumnName,
|
|
1307
1311
|
changingColumnNames,
|
|
1308
1312
|
rows,
|
|
1313
|
+
getPlaceholder,
|
|
1309
1314
|
) => {
|
|
1310
1315
|
const offset = [1];
|
|
1311
1316
|
await executeCommand(
|
|
@@ -1319,7 +1324,11 @@ const defaultUpsert = async (
|
|
|
1319
1324
|
objToArray(
|
|
1320
1325
|
rows,
|
|
1321
1326
|
(row) =>
|
|
1322
|
-
'(
|
|
1327
|
+
'(' +
|
|
1328
|
+
getPlaceholder(offset) +
|
|
1329
|
+
',' +
|
|
1330
|
+
getPlaceholders(row, getPlaceholder, offset) +
|
|
1331
|
+
')',
|
|
1323
1332
|
),
|
|
1324
1333
|
COMMA,
|
|
1325
1334
|
) +
|
|
@@ -1355,6 +1364,7 @@ const createJsonPersister = (
|
|
|
1355
1364
|
thing,
|
|
1356
1365
|
getThing,
|
|
1357
1366
|
columnType,
|
|
1367
|
+
getPlaceholder,
|
|
1358
1368
|
upsert,
|
|
1359
1369
|
_encode,
|
|
1360
1370
|
_decode,
|
|
@@ -1366,6 +1376,7 @@ const createJsonPersister = (
|
|
|
1366
1376
|
managedTableNames,
|
|
1367
1377
|
querySchema,
|
|
1368
1378
|
columnType,
|
|
1379
|
+
getPlaceholder,
|
|
1369
1380
|
upsert,
|
|
1370
1381
|
void 0,
|
|
1371
1382
|
void 0,
|
|
@@ -1433,6 +1444,7 @@ const createTabularPersister = (
|
|
|
1433
1444
|
thing,
|
|
1434
1445
|
getThing,
|
|
1435
1446
|
columnType,
|
|
1447
|
+
getPlaceholder,
|
|
1436
1448
|
upsert,
|
|
1437
1449
|
encode,
|
|
1438
1450
|
decode,
|
|
@@ -1444,6 +1456,7 @@ const createTabularPersister = (
|
|
|
1444
1456
|
managedTableNames,
|
|
1445
1457
|
querySchema,
|
|
1446
1458
|
columnType,
|
|
1459
|
+
getPlaceholder,
|
|
1447
1460
|
upsert,
|
|
1448
1461
|
encode,
|
|
1449
1462
|
decode,
|
|
@@ -1813,12 +1826,13 @@ const createCustomPostgreSqlPersister = (
|
|
|
1813
1826
|
async (executeCommand2, managedTableNames) =>
|
|
1814
1827
|
await executeCommand2(
|
|
1815
1828
|
SELECT + // eslint-disable-next-line max-len
|
|
1816
|
-
` c.table_name tn,c.column_name cn,CASE WHEN tc.constraint_type IN('PRIMARY KEY','UNIQUE')AND(${SELECT} count(*) FROM information_schema.key_column_usage kcu2 ${WHERE} kcu2.constraint_schema=kcu.constraint_schema AND kcu2.constraint_name=kcu.constraint_name)=1 THEN 1 ELSE 0 END uq FROM information_schema.columns c LEFT JOIN information_schema.key_column_usage kcu ON kcu.table_schema=c.table_schema AND kcu.table_name=c.table_name AND kcu.column_name=c.column_name LEFT JOIN information_schema.table_constraints tc ON tc.constraint_schema=kcu.constraint_schema AND tc.constraint_name=kcu.constraint_name ${WHERE} c.table_schema='public'AND c.table_name IN(${getPlaceholders(managedTableNames)})`,
|
|
1829
|
+
` c.table_name tn,c.column_name cn,CASE WHEN tc.constraint_type IN('PRIMARY KEY','UNIQUE')AND(${SELECT} count(*) FROM information_schema.key_column_usage kcu2 ${WHERE} kcu2.constraint_schema=kcu.constraint_schema AND kcu2.constraint_name=kcu.constraint_name)=1 THEN 1 ELSE 0 END uq FROM information_schema.columns c LEFT JOIN information_schema.key_column_usage kcu ON kcu.table_schema=c.table_schema AND kcu.table_name=c.table_name AND kcu.column_name=c.column_name LEFT JOIN information_schema.table_constraints tc ON tc.constraint_schema=kcu.constraint_schema AND tc.constraint_name=kcu.constraint_name ${WHERE} c.table_schema='public'AND c.table_name IN(${getPlaceholders(managedTableNames, numberedPlaceholder)})`,
|
|
1817
1830
|
managedTableNames,
|
|
1818
1831
|
),
|
|
1819
1832
|
thing,
|
|
1820
1833
|
getThing,
|
|
1821
1834
|
'text',
|
|
1835
|
+
numberedPlaceholder,
|
|
1822
1836
|
void 0,
|
|
1823
1837
|
(cellOrValue) => jsonString(cellOrValue),
|
|
1824
1838
|
(field) => jsonParse(field),
|
|
@@ -250,9 +250,10 @@ const escapeId = (str) =>
|
|
|
250
250
|
const escapeIds = (...ids) => escapeId(arrayJoin(ids, '_'));
|
|
251
251
|
const escapeColumnNames = (...columnNames) =>
|
|
252
252
|
arrayJoin(arrayMap(columnNames, escapeId), COMMA);
|
|
253
|
-
const
|
|
253
|
+
const numberedPlaceholder = (offset) => '$' + offset[0]++;
|
|
254
|
+
const getPlaceholders = (array, getPlaceholder, offset = [1]) =>
|
|
254
255
|
arrayJoin(
|
|
255
|
-
arrayMap(array, () =>
|
|
256
|
+
arrayMap(array, () => getPlaceholder(offset)),
|
|
256
257
|
COMMA,
|
|
257
258
|
);
|
|
258
259
|
const getWhereCondition = (tableName, condition = TRUE) =>
|
|
@@ -995,6 +996,7 @@ const getCommandFunctions = (
|
|
|
995
996
|
managedTableNames,
|
|
996
997
|
querySchema,
|
|
997
998
|
columnType,
|
|
999
|
+
getPlaceholder,
|
|
998
1000
|
upsert = defaultUpsert,
|
|
999
1001
|
encode,
|
|
1000
1002
|
decode,
|
|
@@ -1205,7 +1207,7 @@ const getCommandFunctions = (
|
|
|
1205
1207
|
DELETE_FROM +
|
|
1206
1208
|
escapeId(tableName) +
|
|
1207
1209
|
getWhereCondition(tableName, condition) +
|
|
1208
|
-
`AND(${escapeId(rowIdColumnName)}=$1)`,
|
|
1210
|
+
`AND(${escapeId(rowIdColumnName)}=${getPlaceholder([1])})`,
|
|
1209
1211
|
[rowId],
|
|
1210
1212
|
);
|
|
1211
1213
|
} else if (!isEmpty(settingColumnNames)) {
|
|
@@ -1224,6 +1226,7 @@ const getCommandFunctions = (
|
|
|
1224
1226
|
encode ? encode(row[cellId]) : row[cellId],
|
|
1225
1227
|
),
|
|
1226
1228
|
},
|
|
1229
|
+
getPlaceholder,
|
|
1227
1230
|
currentColumnNames,
|
|
1228
1231
|
);
|
|
1229
1232
|
}
|
|
@@ -1257,13 +1260,14 @@ const getCommandFunctions = (
|
|
|
1257
1260
|
rowIdColumnName,
|
|
1258
1261
|
changingColumnNames,
|
|
1259
1262
|
rows,
|
|
1263
|
+
getPlaceholder,
|
|
1260
1264
|
currentColumnNames,
|
|
1261
1265
|
);
|
|
1262
1266
|
await executeCommand(
|
|
1263
1267
|
DELETE_FROM +
|
|
1264
1268
|
escapeId(tableName) +
|
|
1265
1269
|
getWhereCondition(tableName, condition) + // eslint-disable-next-line max-len
|
|
1266
|
-
`AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds)})`,
|
|
1270
|
+
`AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds, getPlaceholder)})`,
|
|
1267
1271
|
deleteRowIds,
|
|
1268
1272
|
);
|
|
1269
1273
|
} else if (
|
|
@@ -1306,6 +1310,7 @@ const defaultUpsert = async (
|
|
|
1306
1310
|
rowIdColumnName,
|
|
1307
1311
|
changingColumnNames,
|
|
1308
1312
|
rows,
|
|
1313
|
+
getPlaceholder,
|
|
1309
1314
|
) => {
|
|
1310
1315
|
const offset = [1];
|
|
1311
1316
|
await executeCommand(
|
|
@@ -1319,7 +1324,11 @@ const defaultUpsert = async (
|
|
|
1319
1324
|
objToArray(
|
|
1320
1325
|
rows,
|
|
1321
1326
|
(row) =>
|
|
1322
|
-
'(
|
|
1327
|
+
'(' +
|
|
1328
|
+
getPlaceholder(offset) +
|
|
1329
|
+
',' +
|
|
1330
|
+
getPlaceholders(row, getPlaceholder, offset) +
|
|
1331
|
+
')',
|
|
1323
1332
|
),
|
|
1324
1333
|
COMMA,
|
|
1325
1334
|
) +
|
|
@@ -1355,6 +1364,7 @@ const createJsonPersister = (
|
|
|
1355
1364
|
thing,
|
|
1356
1365
|
getThing,
|
|
1357
1366
|
columnType,
|
|
1367
|
+
getPlaceholder,
|
|
1358
1368
|
upsert,
|
|
1359
1369
|
_encode,
|
|
1360
1370
|
_decode,
|
|
@@ -1366,6 +1376,7 @@ const createJsonPersister = (
|
|
|
1366
1376
|
managedTableNames,
|
|
1367
1377
|
querySchema,
|
|
1368
1378
|
columnType,
|
|
1379
|
+
getPlaceholder,
|
|
1369
1380
|
upsert,
|
|
1370
1381
|
void 0,
|
|
1371
1382
|
void 0,
|
|
@@ -1433,6 +1444,7 @@ const createTabularPersister = (
|
|
|
1433
1444
|
thing,
|
|
1434
1445
|
getThing,
|
|
1435
1446
|
columnType,
|
|
1447
|
+
getPlaceholder,
|
|
1436
1448
|
upsert,
|
|
1437
1449
|
encode,
|
|
1438
1450
|
decode,
|
|
@@ -1444,6 +1456,7 @@ const createTabularPersister = (
|
|
|
1444
1456
|
managedTableNames,
|
|
1445
1457
|
querySchema,
|
|
1446
1458
|
columnType,
|
|
1459
|
+
getPlaceholder,
|
|
1447
1460
|
upsert,
|
|
1448
1461
|
encode,
|
|
1449
1462
|
decode,
|
|
@@ -1813,12 +1826,13 @@ const createCustomPostgreSqlPersister = (
|
|
|
1813
1826
|
async (executeCommand2, managedTableNames) =>
|
|
1814
1827
|
await executeCommand2(
|
|
1815
1828
|
SELECT + // eslint-disable-next-line max-len
|
|
1816
|
-
` c.table_name tn,c.column_name cn,CASE WHEN tc.constraint_type IN('PRIMARY KEY','UNIQUE')AND(${SELECT} count(*) FROM information_schema.key_column_usage kcu2 ${WHERE} kcu2.constraint_schema=kcu.constraint_schema AND kcu2.constraint_name=kcu.constraint_name)=1 THEN 1 ELSE 0 END uq FROM information_schema.columns c LEFT JOIN information_schema.key_column_usage kcu ON kcu.table_schema=c.table_schema AND kcu.table_name=c.table_name AND kcu.column_name=c.column_name LEFT JOIN information_schema.table_constraints tc ON tc.constraint_schema=kcu.constraint_schema AND tc.constraint_name=kcu.constraint_name ${WHERE} c.table_schema='public'AND c.table_name IN(${getPlaceholders(managedTableNames)})`,
|
|
1829
|
+
` c.table_name tn,c.column_name cn,CASE WHEN tc.constraint_type IN('PRIMARY KEY','UNIQUE')AND(${SELECT} count(*) FROM information_schema.key_column_usage kcu2 ${WHERE} kcu2.constraint_schema=kcu.constraint_schema AND kcu2.constraint_name=kcu.constraint_name)=1 THEN 1 ELSE 0 END uq FROM information_schema.columns c LEFT JOIN information_schema.key_column_usage kcu ON kcu.table_schema=c.table_schema AND kcu.table_name=c.table_name AND kcu.column_name=c.column_name LEFT JOIN information_schema.table_constraints tc ON tc.constraint_schema=kcu.constraint_schema AND tc.constraint_name=kcu.constraint_name ${WHERE} c.table_schema='public'AND c.table_name IN(${getPlaceholders(managedTableNames, numberedPlaceholder)})`,
|
|
1817
1830
|
managedTableNames,
|
|
1818
1831
|
),
|
|
1819
1832
|
thing,
|
|
1820
1833
|
getThing,
|
|
1821
1834
|
'text',
|
|
1835
|
+
numberedPlaceholder,
|
|
1822
1836
|
void 0,
|
|
1823
1837
|
(cellOrValue) => jsonString(cellOrValue),
|
|
1824
1838
|
(field) => jsonParse(field),
|
|
@@ -249,9 +249,10 @@ const escapeId = (str) =>
|
|
|
249
249
|
const escapeIds = (...ids) => escapeId(arrayJoin(ids, '_'));
|
|
250
250
|
const escapeColumnNames = (...columnNames) =>
|
|
251
251
|
arrayJoin(arrayMap(columnNames, escapeId), COMMA);
|
|
252
|
-
const
|
|
252
|
+
const numberedPlaceholder = (offset) => '$' + offset[0]++;
|
|
253
|
+
const getPlaceholders = (array, getPlaceholder, offset = [1]) =>
|
|
253
254
|
arrayJoin(
|
|
254
|
-
arrayMap(array, () =>
|
|
255
|
+
arrayMap(array, () => getPlaceholder(offset)),
|
|
255
256
|
COMMA,
|
|
256
257
|
);
|
|
257
258
|
const getWhereCondition = (tableName, condition = TRUE) =>
|
|
@@ -994,6 +995,7 @@ const getCommandFunctions = (
|
|
|
994
995
|
managedTableNames,
|
|
995
996
|
querySchema,
|
|
996
997
|
columnType,
|
|
998
|
+
getPlaceholder,
|
|
997
999
|
upsert = defaultUpsert,
|
|
998
1000
|
encode,
|
|
999
1001
|
decode,
|
|
@@ -1204,7 +1206,7 @@ const getCommandFunctions = (
|
|
|
1204
1206
|
DELETE_FROM +
|
|
1205
1207
|
escapeId(tableName) +
|
|
1206
1208
|
getWhereCondition(tableName, condition) +
|
|
1207
|
-
`AND(${escapeId(rowIdColumnName)}=$1)`,
|
|
1209
|
+
`AND(${escapeId(rowIdColumnName)}=${getPlaceholder([1])})`,
|
|
1208
1210
|
[rowId],
|
|
1209
1211
|
);
|
|
1210
1212
|
} else if (!isEmpty(settingColumnNames)) {
|
|
@@ -1223,6 +1225,7 @@ const getCommandFunctions = (
|
|
|
1223
1225
|
encode ? encode(row[cellId]) : row[cellId],
|
|
1224
1226
|
),
|
|
1225
1227
|
},
|
|
1228
|
+
getPlaceholder,
|
|
1226
1229
|
currentColumnNames,
|
|
1227
1230
|
);
|
|
1228
1231
|
}
|
|
@@ -1256,13 +1259,14 @@ const getCommandFunctions = (
|
|
|
1256
1259
|
rowIdColumnName,
|
|
1257
1260
|
changingColumnNames,
|
|
1258
1261
|
rows,
|
|
1262
|
+
getPlaceholder,
|
|
1259
1263
|
currentColumnNames,
|
|
1260
1264
|
);
|
|
1261
1265
|
await executeCommand(
|
|
1262
1266
|
DELETE_FROM +
|
|
1263
1267
|
escapeId(tableName) +
|
|
1264
1268
|
getWhereCondition(tableName, condition) + // eslint-disable-next-line max-len
|
|
1265
|
-
`AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds)})`,
|
|
1269
|
+
`AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds, getPlaceholder)})`,
|
|
1266
1270
|
deleteRowIds,
|
|
1267
1271
|
);
|
|
1268
1272
|
} else if (
|
|
@@ -1305,6 +1309,7 @@ const defaultUpsert = async (
|
|
|
1305
1309
|
rowIdColumnName,
|
|
1306
1310
|
changingColumnNames,
|
|
1307
1311
|
rows,
|
|
1312
|
+
getPlaceholder,
|
|
1308
1313
|
) => {
|
|
1309
1314
|
const offset = [1];
|
|
1310
1315
|
await executeCommand(
|
|
@@ -1318,7 +1323,11 @@ const defaultUpsert = async (
|
|
|
1318
1323
|
objToArray(
|
|
1319
1324
|
rows,
|
|
1320
1325
|
(row) =>
|
|
1321
|
-
'(
|
|
1326
|
+
'(' +
|
|
1327
|
+
getPlaceholder(offset) +
|
|
1328
|
+
',' +
|
|
1329
|
+
getPlaceholders(row, getPlaceholder, offset) +
|
|
1330
|
+
')',
|
|
1322
1331
|
),
|
|
1323
1332
|
COMMA,
|
|
1324
1333
|
) +
|
|
@@ -1354,6 +1363,7 @@ const createJsonPersister = (
|
|
|
1354
1363
|
thing,
|
|
1355
1364
|
getThing,
|
|
1356
1365
|
columnType,
|
|
1366
|
+
getPlaceholder,
|
|
1357
1367
|
upsert,
|
|
1358
1368
|
_encode,
|
|
1359
1369
|
_decode,
|
|
@@ -1365,6 +1375,7 @@ const createJsonPersister = (
|
|
|
1365
1375
|
managedTableNames,
|
|
1366
1376
|
querySchema,
|
|
1367
1377
|
columnType,
|
|
1378
|
+
getPlaceholder,
|
|
1368
1379
|
upsert,
|
|
1369
1380
|
void 0,
|
|
1370
1381
|
void 0,
|
|
@@ -1432,6 +1443,7 @@ const createTabularPersister = (
|
|
|
1432
1443
|
thing,
|
|
1433
1444
|
getThing,
|
|
1434
1445
|
columnType,
|
|
1446
|
+
getPlaceholder,
|
|
1435
1447
|
upsert,
|
|
1436
1448
|
encode,
|
|
1437
1449
|
decode,
|
|
@@ -1443,6 +1455,7 @@ const createTabularPersister = (
|
|
|
1443
1455
|
managedTableNames,
|
|
1444
1456
|
querySchema,
|
|
1445
1457
|
columnType,
|
|
1458
|
+
getPlaceholder,
|
|
1446
1459
|
upsert,
|
|
1447
1460
|
encode,
|
|
1448
1461
|
decode,
|
|
@@ -1812,12 +1825,13 @@ const createCustomPostgreSqlPersister = (
|
|
|
1812
1825
|
async (executeCommand2, managedTableNames) =>
|
|
1813
1826
|
await executeCommand2(
|
|
1814
1827
|
SELECT + // eslint-disable-next-line max-len
|
|
1815
|
-
` c.table_name tn,c.column_name cn,CASE WHEN tc.constraint_type IN('PRIMARY KEY','UNIQUE')AND(${SELECT} count(*) FROM information_schema.key_column_usage kcu2 ${WHERE} kcu2.constraint_schema=kcu.constraint_schema AND kcu2.constraint_name=kcu.constraint_name)=1 THEN 1 ELSE 0 END uq FROM information_schema.columns c LEFT JOIN information_schema.key_column_usage kcu ON kcu.table_schema=c.table_schema AND kcu.table_name=c.table_name AND kcu.column_name=c.column_name LEFT JOIN information_schema.table_constraints tc ON tc.constraint_schema=kcu.constraint_schema AND tc.constraint_name=kcu.constraint_name ${WHERE} c.table_schema='public'AND c.table_name IN(${getPlaceholders(managedTableNames)})`,
|
|
1828
|
+
` c.table_name tn,c.column_name cn,CASE WHEN tc.constraint_type IN('PRIMARY KEY','UNIQUE')AND(${SELECT} count(*) FROM information_schema.key_column_usage kcu2 ${WHERE} kcu2.constraint_schema=kcu.constraint_schema AND kcu2.constraint_name=kcu.constraint_name)=1 THEN 1 ELSE 0 END uq FROM information_schema.columns c LEFT JOIN information_schema.key_column_usage kcu ON kcu.table_schema=c.table_schema AND kcu.table_name=c.table_name AND kcu.column_name=c.column_name LEFT JOIN information_schema.table_constraints tc ON tc.constraint_schema=kcu.constraint_schema AND tc.constraint_name=kcu.constraint_name ${WHERE} c.table_schema='public'AND c.table_name IN(${getPlaceholders(managedTableNames, numberedPlaceholder)})`,
|
|
1816
1829
|
managedTableNames,
|
|
1817
1830
|
),
|
|
1818
1831
|
thing,
|
|
1819
1832
|
getThing,
|
|
1820
1833
|
'text',
|
|
1834
|
+
numberedPlaceholder,
|
|
1821
1835
|
void 0,
|
|
1822
1836
|
(cellOrValue) => jsonString(cellOrValue),
|
|
1823
1837
|
(field) => jsonParse(field),
|
|
@@ -249,9 +249,10 @@ const escapeId = (str) =>
|
|
|
249
249
|
const escapeIds = (...ids) => escapeId(arrayJoin(ids, '_'));
|
|
250
250
|
const escapeColumnNames = (...columnNames) =>
|
|
251
251
|
arrayJoin(arrayMap(columnNames, escapeId), COMMA);
|
|
252
|
-
const
|
|
252
|
+
const numberedPlaceholder = (offset) => '$' + offset[0]++;
|
|
253
|
+
const getPlaceholders = (array, getPlaceholder, offset = [1]) =>
|
|
253
254
|
arrayJoin(
|
|
254
|
-
arrayMap(array, () =>
|
|
255
|
+
arrayMap(array, () => getPlaceholder(offset)),
|
|
255
256
|
COMMA,
|
|
256
257
|
);
|
|
257
258
|
const getWhereCondition = (tableName, condition = TRUE) =>
|
|
@@ -994,6 +995,7 @@ const getCommandFunctions = (
|
|
|
994
995
|
managedTableNames,
|
|
995
996
|
querySchema,
|
|
996
997
|
columnType,
|
|
998
|
+
getPlaceholder,
|
|
997
999
|
upsert = defaultUpsert,
|
|
998
1000
|
encode,
|
|
999
1001
|
decode,
|
|
@@ -1204,7 +1206,7 @@ const getCommandFunctions = (
|
|
|
1204
1206
|
DELETE_FROM +
|
|
1205
1207
|
escapeId(tableName) +
|
|
1206
1208
|
getWhereCondition(tableName, condition) +
|
|
1207
|
-
`AND(${escapeId(rowIdColumnName)}=$1)`,
|
|
1209
|
+
`AND(${escapeId(rowIdColumnName)}=${getPlaceholder([1])})`,
|
|
1208
1210
|
[rowId],
|
|
1209
1211
|
);
|
|
1210
1212
|
} else if (!isEmpty(settingColumnNames)) {
|
|
@@ -1223,6 +1225,7 @@ const getCommandFunctions = (
|
|
|
1223
1225
|
encode ? encode(row[cellId]) : row[cellId],
|
|
1224
1226
|
),
|
|
1225
1227
|
},
|
|
1228
|
+
getPlaceholder,
|
|
1226
1229
|
currentColumnNames,
|
|
1227
1230
|
);
|
|
1228
1231
|
}
|
|
@@ -1256,13 +1259,14 @@ const getCommandFunctions = (
|
|
|
1256
1259
|
rowIdColumnName,
|
|
1257
1260
|
changingColumnNames,
|
|
1258
1261
|
rows,
|
|
1262
|
+
getPlaceholder,
|
|
1259
1263
|
currentColumnNames,
|
|
1260
1264
|
);
|
|
1261
1265
|
await executeCommand(
|
|
1262
1266
|
DELETE_FROM +
|
|
1263
1267
|
escapeId(tableName) +
|
|
1264
1268
|
getWhereCondition(tableName, condition) + // eslint-disable-next-line max-len
|
|
1265
|
-
`AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds)})`,
|
|
1269
|
+
`AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds, getPlaceholder)})`,
|
|
1266
1270
|
deleteRowIds,
|
|
1267
1271
|
);
|
|
1268
1272
|
} else if (
|
|
@@ -1305,6 +1309,7 @@ const defaultUpsert = async (
|
|
|
1305
1309
|
rowIdColumnName,
|
|
1306
1310
|
changingColumnNames,
|
|
1307
1311
|
rows,
|
|
1312
|
+
getPlaceholder,
|
|
1308
1313
|
) => {
|
|
1309
1314
|
const offset = [1];
|
|
1310
1315
|
await executeCommand(
|
|
@@ -1318,7 +1323,11 @@ const defaultUpsert = async (
|
|
|
1318
1323
|
objToArray(
|
|
1319
1324
|
rows,
|
|
1320
1325
|
(row) =>
|
|
1321
|
-
'(
|
|
1326
|
+
'(' +
|
|
1327
|
+
getPlaceholder(offset) +
|
|
1328
|
+
',' +
|
|
1329
|
+
getPlaceholders(row, getPlaceholder, offset) +
|
|
1330
|
+
')',
|
|
1322
1331
|
),
|
|
1323
1332
|
COMMA,
|
|
1324
1333
|
) +
|
|
@@ -1354,6 +1363,7 @@ const createJsonPersister = (
|
|
|
1354
1363
|
thing,
|
|
1355
1364
|
getThing,
|
|
1356
1365
|
columnType,
|
|
1366
|
+
getPlaceholder,
|
|
1357
1367
|
upsert,
|
|
1358
1368
|
_encode,
|
|
1359
1369
|
_decode,
|
|
@@ -1365,6 +1375,7 @@ const createJsonPersister = (
|
|
|
1365
1375
|
managedTableNames,
|
|
1366
1376
|
querySchema,
|
|
1367
1377
|
columnType,
|
|
1378
|
+
getPlaceholder,
|
|
1368
1379
|
upsert,
|
|
1369
1380
|
void 0,
|
|
1370
1381
|
void 0,
|
|
@@ -1432,6 +1443,7 @@ const createTabularPersister = (
|
|
|
1432
1443
|
thing,
|
|
1433
1444
|
getThing,
|
|
1434
1445
|
columnType,
|
|
1446
|
+
getPlaceholder,
|
|
1435
1447
|
upsert,
|
|
1436
1448
|
encode,
|
|
1437
1449
|
decode,
|
|
@@ -1443,6 +1455,7 @@ const createTabularPersister = (
|
|
|
1443
1455
|
managedTableNames,
|
|
1444
1456
|
querySchema,
|
|
1445
1457
|
columnType,
|
|
1458
|
+
getPlaceholder,
|
|
1446
1459
|
upsert,
|
|
1447
1460
|
encode,
|
|
1448
1461
|
decode,
|
|
@@ -1812,12 +1825,13 @@ const createCustomPostgreSqlPersister = (
|
|
|
1812
1825
|
async (executeCommand2, managedTableNames) =>
|
|
1813
1826
|
await executeCommand2(
|
|
1814
1827
|
SELECT + // eslint-disable-next-line max-len
|
|
1815
|
-
` c.table_name tn,c.column_name cn,CASE WHEN tc.constraint_type IN('PRIMARY KEY','UNIQUE')AND(${SELECT} count(*) FROM information_schema.key_column_usage kcu2 ${WHERE} kcu2.constraint_schema=kcu.constraint_schema AND kcu2.constraint_name=kcu.constraint_name)=1 THEN 1 ELSE 0 END uq FROM information_schema.columns c LEFT JOIN information_schema.key_column_usage kcu ON kcu.table_schema=c.table_schema AND kcu.table_name=c.table_name AND kcu.column_name=c.column_name LEFT JOIN information_schema.table_constraints tc ON tc.constraint_schema=kcu.constraint_schema AND tc.constraint_name=kcu.constraint_name ${WHERE} c.table_schema='public'AND c.table_name IN(${getPlaceholders(managedTableNames)})`,
|
|
1828
|
+
` c.table_name tn,c.column_name cn,CASE WHEN tc.constraint_type IN('PRIMARY KEY','UNIQUE')AND(${SELECT} count(*) FROM information_schema.key_column_usage kcu2 ${WHERE} kcu2.constraint_schema=kcu.constraint_schema AND kcu2.constraint_name=kcu.constraint_name)=1 THEN 1 ELSE 0 END uq FROM information_schema.columns c LEFT JOIN information_schema.key_column_usage kcu ON kcu.table_schema=c.table_schema AND kcu.table_name=c.table_name AND kcu.column_name=c.column_name LEFT JOIN information_schema.table_constraints tc ON tc.constraint_schema=kcu.constraint_schema AND tc.constraint_name=kcu.constraint_name ${WHERE} c.table_schema='public'AND c.table_name IN(${getPlaceholders(managedTableNames, numberedPlaceholder)})`,
|
|
1816
1829
|
managedTableNames,
|
|
1817
1830
|
),
|
|
1818
1831
|
thing,
|
|
1819
1832
|
getThing,
|
|
1820
1833
|
'text',
|
|
1834
|
+
numberedPlaceholder,
|
|
1821
1835
|
void 0,
|
|
1822
1836
|
(cellOrValue) => jsonString(cellOrValue),
|
|
1823
1837
|
(field) => jsonParse(field),
|
|
@@ -179,9 +179,10 @@ const escapeId = (str) =>
|
|
|
179
179
|
);
|
|
180
180
|
const escapeColumnNames = (...columnNames) =>
|
|
181
181
|
arrayJoin(arrayMap(columnNames, escapeId), COMMA);
|
|
182
|
-
const
|
|
182
|
+
const anonymousPlaceholder = () => '?';
|
|
183
|
+
const getPlaceholders = (array, getPlaceholder, offset = [1]) =>
|
|
183
184
|
arrayJoin(
|
|
184
|
-
arrayMap(array, () =>
|
|
185
|
+
arrayMap(array, () => getPlaceholder(offset)),
|
|
185
186
|
COMMA,
|
|
186
187
|
);
|
|
187
188
|
const getWhereCondition = (tableName, condition = TRUE) =>
|
|
@@ -1002,6 +1003,7 @@ const getCommandFunctions = (
|
|
|
1002
1003
|
managedTableNames,
|
|
1003
1004
|
querySchema,
|
|
1004
1005
|
columnType,
|
|
1006
|
+
getPlaceholder,
|
|
1005
1007
|
upsert = defaultUpsert,
|
|
1006
1008
|
encode,
|
|
1007
1009
|
decode,
|
|
@@ -1212,7 +1214,7 @@ const getCommandFunctions = (
|
|
|
1212
1214
|
DELETE_FROM +
|
|
1213
1215
|
escapeId(tableName) +
|
|
1214
1216
|
getWhereCondition(tableName, condition) +
|
|
1215
|
-
`AND(${escapeId(rowIdColumnName)}=$1)`,
|
|
1217
|
+
`AND(${escapeId(rowIdColumnName)}=${getPlaceholder([1])})`,
|
|
1216
1218
|
[rowId],
|
|
1217
1219
|
);
|
|
1218
1220
|
} else if (!isEmpty(settingColumnNames)) {
|
|
@@ -1231,6 +1233,7 @@ const getCommandFunctions = (
|
|
|
1231
1233
|
encode ? encode(row[cellId]) : row[cellId],
|
|
1232
1234
|
),
|
|
1233
1235
|
},
|
|
1236
|
+
getPlaceholder,
|
|
1234
1237
|
currentColumnNames,
|
|
1235
1238
|
);
|
|
1236
1239
|
}
|
|
@@ -1264,13 +1267,14 @@ const getCommandFunctions = (
|
|
|
1264
1267
|
rowIdColumnName,
|
|
1265
1268
|
changingColumnNames,
|
|
1266
1269
|
rows,
|
|
1270
|
+
getPlaceholder,
|
|
1267
1271
|
currentColumnNames,
|
|
1268
1272
|
);
|
|
1269
1273
|
await executeCommand(
|
|
1270
1274
|
DELETE_FROM +
|
|
1271
1275
|
escapeId(tableName) +
|
|
1272
1276
|
getWhereCondition(tableName, condition) + // eslint-disable-next-line max-len
|
|
1273
|
-
`AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds)})`,
|
|
1277
|
+
`AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds, getPlaceholder)})`,
|
|
1274
1278
|
deleteRowIds,
|
|
1275
1279
|
);
|
|
1276
1280
|
} else if (
|
|
@@ -1313,6 +1317,7 @@ const defaultUpsert = async (
|
|
|
1313
1317
|
rowIdColumnName,
|
|
1314
1318
|
changingColumnNames,
|
|
1315
1319
|
rows,
|
|
1320
|
+
getPlaceholder,
|
|
1316
1321
|
) => {
|
|
1317
1322
|
const offset = [1];
|
|
1318
1323
|
await executeCommand(
|
|
@@ -1326,7 +1331,11 @@ const defaultUpsert = async (
|
|
|
1326
1331
|
objToArray(
|
|
1327
1332
|
rows,
|
|
1328
1333
|
(row) =>
|
|
1329
|
-
'(
|
|
1334
|
+
'(' +
|
|
1335
|
+
getPlaceholder(offset) +
|
|
1336
|
+
',' +
|
|
1337
|
+
getPlaceholders(row, getPlaceholder, offset) +
|
|
1338
|
+
')',
|
|
1330
1339
|
),
|
|
1331
1340
|
COMMA,
|
|
1332
1341
|
) +
|
|
@@ -1362,6 +1371,7 @@ const createJsonPersister = (
|
|
|
1362
1371
|
thing,
|
|
1363
1372
|
getThing,
|
|
1364
1373
|
columnType,
|
|
1374
|
+
getPlaceholder,
|
|
1365
1375
|
upsert,
|
|
1366
1376
|
_encode,
|
|
1367
1377
|
_decode,
|
|
@@ -1373,6 +1383,7 @@ const createJsonPersister = (
|
|
|
1373
1383
|
managedTableNames,
|
|
1374
1384
|
querySchema,
|
|
1375
1385
|
columnType,
|
|
1386
|
+
getPlaceholder,
|
|
1376
1387
|
upsert,
|
|
1377
1388
|
void 0,
|
|
1378
1389
|
void 0,
|
|
@@ -1440,6 +1451,7 @@ const createTabularPersister = (
|
|
|
1440
1451
|
thing,
|
|
1441
1452
|
getThing,
|
|
1442
1453
|
columnType,
|
|
1454
|
+
getPlaceholder,
|
|
1443
1455
|
upsert,
|
|
1444
1456
|
encode,
|
|
1445
1457
|
decode,
|
|
@@ -1451,6 +1463,7 @@ const createTabularPersister = (
|
|
|
1451
1463
|
managedTableNames,
|
|
1452
1464
|
querySchema,
|
|
1453
1465
|
columnType,
|
|
1466
|
+
getPlaceholder,
|
|
1454
1467
|
upsert,
|
|
1455
1468
|
encode,
|
|
1456
1469
|
decode,
|
|
@@ -1710,12 +1723,13 @@ const createCustomSqlitePersister = (
|
|
|
1710
1723
|
async (executeCommand2, managedTableNames) =>
|
|
1711
1724
|
await executeCommand2(
|
|
1712
1725
|
SELECT + // eslint-disable-next-line max-len
|
|
1713
|
-
` t.name tn,c.name cn,c.pk OR EXISTS(${SELECT} 1 FROM ${PRAGMA}index_list(t.name)i,${PRAGMA}index_info(i.name)ii ${WHERE} i."unique"=1 AND ii.name=c.name AND(${SELECT} count(*) FROM ${PRAGMA}index_info(i.name))=1)uq FROM ${PRAGMA_TABLE}list()t,${PRAGMA_TABLE}info(t.name)c ${WHERE} t.schema='main'AND t.type IN('table','view')AND t.name IN(${getPlaceholders(managedTableNames)})ORDER BY t.name,c.name`,
|
|
1726
|
+
` t.name tn,c.name cn,c.pk OR EXISTS(${SELECT} 1 FROM ${PRAGMA}index_list(t.name)i,${PRAGMA}index_info(i.name)ii ${WHERE} i."unique"=1 AND ii.name=c.name AND(${SELECT} count(*) FROM ${PRAGMA}index_info(i.name))=1)uq FROM ${PRAGMA_TABLE}list()t,${PRAGMA_TABLE}info(t.name)c ${WHERE} t.schema='main'AND t.type IN('table','view')AND t.name IN(${getPlaceholders(managedTableNames, anonymousPlaceholder)})ORDER BY t.name,c.name`,
|
|
1714
1727
|
managedTableNames,
|
|
1715
1728
|
),
|
|
1716
1729
|
thing,
|
|
1717
1730
|
getThing,
|
|
1718
1731
|
EMPTY_STRING,
|
|
1732
|
+
anonymousPlaceholder,
|
|
1719
1733
|
upsert,
|
|
1720
1734
|
(cellOrValue) =>
|
|
1721
1735
|
isTrue(cellOrValue) ? 1 : isFalse(cellOrValue) ? 0 : cellOrValue,
|
|
@@ -1774,14 +1788,17 @@ const powerSyncUpdateThenInsert = async (
|
|
|
1774
1788
|
rowIdColumnName,
|
|
1775
1789
|
changingColumnNames,
|
|
1776
1790
|
rows,
|
|
1791
|
+
getPlaceholder,
|
|
1777
1792
|
) => {
|
|
1793
|
+
const updateOffset = [1];
|
|
1778
1794
|
const assignments = arrayJoin(
|
|
1779
1795
|
arrayMap(
|
|
1780
1796
|
changingColumnNames,
|
|
1781
|
-
(columnName
|
|
1797
|
+
(columnName) => escapeId(columnName) + '=' + getPlaceholder(updateOffset),
|
|
1782
1798
|
),
|
|
1783
1799
|
COMMA,
|
|
1784
1800
|
);
|
|
1801
|
+
const rowIdPlaceholder = getPlaceholder(updateOffset);
|
|
1785
1802
|
for (const [id, row] of objToArray(rows, (row2, id2) => [id2, row2])) {
|
|
1786
1803
|
const rowParams = arrayMap(row, (value) => value ?? null);
|
|
1787
1804
|
if (
|
|
@@ -1794,8 +1811,8 @@ const powerSyncUpdateThenInsert = async (
|
|
|
1794
1811
|
' ' +
|
|
1795
1812
|
WHERE +
|
|
1796
1813
|
escapeId(rowIdColumnName) +
|
|
1797
|
-
'
|
|
1798
|
-
|
|
1814
|
+
'=' +
|
|
1815
|
+
rowIdPlaceholder +
|
|
1799
1816
|
' RETURNING' +
|
|
1800
1817
|
escapeId(rowIdColumnName),
|
|
1801
1818
|
[...rowParams, id],
|
|
@@ -1810,7 +1827,7 @@ const powerSyncUpdateThenInsert = async (
|
|
|
1810
1827
|
'(' +
|
|
1811
1828
|
escapeColumnNames(rowIdColumnName, ...changingColumnNames) +
|
|
1812
1829
|
')VALUES(' +
|
|
1813
|
-
getPlaceholders([id, ...row], offset) +
|
|
1830
|
+
getPlaceholders([id, ...row], getPlaceholder, offset) +
|
|
1814
1831
|
')',
|
|
1815
1832
|
[id, ...rowParams],
|
|
1816
1833
|
);
|