@slonik/sql-tag 48.12.3 → 48.13.0
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/README.md +0 -1
- package/dist/Logger.js +2 -2
- package/dist/factories/createPrimitiveValueExpressions.d.ts +1 -1
- package/dist/factories/createPrimitiveValueExpressions.js +10 -10
- package/dist/factories/createSqlTag.d.ts +2 -2
- package/dist/factories/createSqlTag.d.ts.map +1 -1
- package/dist/factories/createSqlTag.js +16 -16
- package/dist/factories/createSqlTag.js.map +1 -1
- package/dist/factories/createSqlTag.test/array.test.js +44 -44
- package/dist/factories/createSqlTag.test/array.test.js.map +1 -1
- package/dist/factories/createSqlTag.test/date.test.js +9 -9
- package/dist/factories/createSqlTag.test/date.test.js.map +1 -1
- package/dist/factories/createSqlTag.test/identifier.test.js +11 -14
- package/dist/factories/createSqlTag.test/identifier.test.js.map +1 -1
- package/dist/factories/createSqlTag.test/interval.test.js +10 -10
- package/dist/factories/createSqlTag.test/join.test.js +24 -24
- package/dist/factories/createSqlTag.test/join.test.js.map +1 -1
- package/dist/factories/createSqlTag.test/json.test.js +27 -27
- package/dist/factories/createSqlTag.test/json.test.js.map +1 -1
- package/dist/factories/createSqlTag.test/jsonb.test.js +27 -27
- package/dist/factories/createSqlTag.test/jsonb.test.js.map +1 -1
- package/dist/factories/createSqlTag.test/literalValue.test.js +5 -5
- package/dist/factories/createSqlTag.test/literalValue.test.js.map +1 -1
- package/dist/factories/createSqlTag.test/sql.test.js +37 -37
- package/dist/factories/createSqlTag.test/sql.test.js.map +1 -1
- package/dist/factories/createSqlTag.test/timestamp.test.js +9 -9
- package/dist/factories/createSqlTag.test/timestamp.test.js.map +1 -1
- package/dist/factories/createSqlTag.test/type.test.js +4 -4
- package/dist/factories/createSqlTag.test/typeAlias.test.js +8 -8
- package/dist/factories/createSqlTag.test/unnest.test.js +25 -25
- package/dist/factories/createSqlTag.test/unnest.test.js.map +1 -1
- package/dist/factories/createSqlTag.test/uuid.test.js +10 -10
- package/dist/factories/createSqlTag.test/uuid.test.js.map +1 -1
- package/dist/factories/createSqlTokenSqlFragment.d.ts +1 -1
- package/dist/factories/createSqlTokenSqlFragment.d.ts.map +1 -1
- package/dist/factories/createSqlTokenSqlFragment.js +28 -67
- package/dist/factories/createSqlTokenSqlFragment.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.js +4 -4
- package/dist/sqlFragmentFactories/createArraySqlFragment.d.ts +1 -1
- package/dist/sqlFragmentFactories/createArraySqlFragment.d.ts.map +1 -1
- package/dist/sqlFragmentFactories/createArraySqlFragment.js +15 -15
- package/dist/sqlFragmentFactories/createArraySqlFragment.js.map +1 -1
- package/dist/sqlFragmentFactories/createBinarySqlFragment.d.ts +1 -1
- package/dist/sqlFragmentFactories/createBinarySqlFragment.js +4 -4
- package/dist/sqlFragmentFactories/createDateSqlFragment.d.ts +1 -1
- package/dist/sqlFragmentFactories/createDateSqlFragment.d.ts.map +1 -1
- package/dist/sqlFragmentFactories/createDateSqlFragment.js +5 -5
- package/dist/sqlFragmentFactories/createDateSqlFragment.js.map +1 -1
- package/dist/sqlFragmentFactories/createFragmentSqlFragment.d.ts +1 -1
- package/dist/sqlFragmentFactories/createFragmentSqlFragment.d.ts.map +1 -1
- package/dist/sqlFragmentFactories/createFragmentSqlFragment.js +7 -7
- package/dist/sqlFragmentFactories/createFragmentSqlFragment.js.map +1 -1
- package/dist/sqlFragmentFactories/createIdentifierSqlFragment.d.ts +1 -1
- package/dist/sqlFragmentFactories/createIdentifierSqlFragment.d.ts.map +1 -1
- package/dist/sqlFragmentFactories/createIdentifierSqlFragment.js +6 -6
- package/dist/sqlFragmentFactories/createIdentifierSqlFragment.js.map +1 -1
- package/dist/sqlFragmentFactories/createIntervalSqlFragment.d.ts +1 -1
- package/dist/sqlFragmentFactories/createIntervalSqlFragment.d.ts.map +1 -1
- package/dist/sqlFragmentFactories/createIntervalSqlFragment.js +10 -20
- package/dist/sqlFragmentFactories/createIntervalSqlFragment.js.map +1 -1
- package/dist/sqlFragmentFactories/createJsonSqlFragment.d.ts +1 -1
- package/dist/sqlFragmentFactories/createJsonSqlFragment.d.ts.map +1 -1
- package/dist/sqlFragmentFactories/createJsonSqlFragment.js +16 -18
- package/dist/sqlFragmentFactories/createJsonSqlFragment.js.map +1 -1
- package/dist/sqlFragmentFactories/createListSqlFragment.d.ts +1 -1
- package/dist/sqlFragmentFactories/createListSqlFragment.d.ts.map +1 -1
- package/dist/sqlFragmentFactories/createListSqlFragment.js +9 -9
- package/dist/sqlFragmentFactories/createListSqlFragment.js.map +1 -1
- package/dist/sqlFragmentFactories/createQuerySqlFragment.d.ts +1 -1
- package/dist/sqlFragmentFactories/createQuerySqlFragment.d.ts.map +1 -1
- package/dist/sqlFragmentFactories/createQuerySqlFragment.js +7 -7
- package/dist/sqlFragmentFactories/createQuerySqlFragment.js.map +1 -1
- package/dist/sqlFragmentFactories/createTimestampSqlFragment.d.ts +1 -1
- package/dist/sqlFragmentFactories/createTimestampSqlFragment.d.ts.map +1 -1
- package/dist/sqlFragmentFactories/createTimestampSqlFragment.js +5 -7
- package/dist/sqlFragmentFactories/createTimestampSqlFragment.js.map +1 -1
- package/dist/sqlFragmentFactories/createUnnestSqlFragment.d.ts +1 -1
- package/dist/sqlFragmentFactories/createUnnestSqlFragment.d.ts.map +1 -1
- package/dist/sqlFragmentFactories/createUnnestSqlFragment.js +19 -20
- package/dist/sqlFragmentFactories/createUnnestSqlFragment.js.map +1 -1
- package/dist/sqlFragmentFactories/createUuidSqlFragment.d.ts +1 -1
- package/dist/sqlFragmentFactories/createUuidSqlFragment.js +5 -5
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +14 -14
- package/dist/tokens.js.map +1 -1
- package/dist/types.d.ts +5 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/utilities/countArrayDimensions.js +1 -1
- package/dist/utilities/countArrayDimensions.test.js +6 -6
- package/dist/utilities/escapeIdentifier.test.js +5 -5
- package/dist/utilities/escapeLiteralValue.js +2 -2
- package/dist/utilities/escapeLiteralValue.test.js +7 -7
- package/dist/utilities/formatSlonikPlaceholder.js +1 -1
- package/dist/utilities/isPlainObject.js +1 -1
- package/dist/utilities/isPrimitiveValueExpression.js +4 -4
- package/dist/utilities/isSqlToken.d.ts +1 -1
- package/dist/utilities/isSqlToken.d.ts.map +1 -1
- package/dist/utilities/isSqlToken.js +9 -9
- package/dist/utilities/isSqlToken.js.map +1 -1
- package/dist/utilities/safeStringify.js +3 -3
- package/dist/utilities/stripArrayNotation.js +1 -1
- package/dist/utilities/stripArrayNotation.test.js +6 -6
- package/package.json +35 -39
- package/src/Logger.ts +2 -2
- package/src/declarations.d.ts +2 -2
- package/src/factories/createPrimitiveValueExpressions.ts +11 -11
- package/src/factories/createSqlTag.test/array.test.ts +54 -66
- package/src/factories/createSqlTag.test/date.test.ts +9 -11
- package/src/factories/createSqlTag.test/identifier.test.ts +11 -14
- package/src/factories/createSqlTag.test/interval.test.ts +10 -10
- package/src/factories/createSqlTag.test/join.test.ts +25 -31
- package/src/factories/createSqlTag.test/json.test.ts +27 -30
- package/src/factories/createSqlTag.test/jsonb.test.ts +27 -30
- package/src/factories/createSqlTag.test/literalValue.test.ts +5 -7
- package/src/factories/createSqlTag.test/sql.test.ts +38 -41
- package/src/factories/createSqlTag.test/timestamp.test.ts +9 -14
- package/src/factories/createSqlTag.test/type.test.ts +4 -4
- package/src/factories/createSqlTag.test/typeAlias.test.ts +9 -9
- package/src/factories/createSqlTag.test/unnest.test.ts +25 -34
- package/src/factories/createSqlTag.test/uuid.test.ts +10 -12
- package/src/factories/createSqlTag.ts +26 -47
- package/src/factories/createSqlTokenSqlFragment.ts +30 -74
- package/src/index.ts +5 -5
- package/src/sqlFragmentFactories/createArraySqlFragment.ts +17 -22
- package/src/sqlFragmentFactories/createBinarySqlFragment.ts +5 -5
- package/src/sqlFragmentFactories/createDateSqlFragment.ts +6 -8
- package/src/sqlFragmentFactories/createFragmentSqlFragment.ts +9 -11
- package/src/sqlFragmentFactories/createIdentifierSqlFragment.ts +8 -12
- package/src/sqlFragmentFactories/createIntervalSqlFragment.ts +11 -23
- package/src/sqlFragmentFactories/createJsonSqlFragment.ts +17 -25
- package/src/sqlFragmentFactories/createListSqlFragment.ts +10 -14
- package/src/sqlFragmentFactories/createQuerySqlFragment.ts +9 -11
- package/src/sqlFragmentFactories/createTimestampSqlFragment.ts +6 -11
- package/src/sqlFragmentFactories/createUnnestSqlFragment.ts +20 -29
- package/src/sqlFragmentFactories/createUuidSqlFragment.ts +6 -6
- package/src/tokens.ts +14 -16
- package/src/types.ts +65 -87
- package/src/utilities/countArrayDimensions.test.ts +6 -6
- package/src/utilities/countArrayDimensions.ts +1 -1
- package/src/utilities/escapeIdentifier.test.ts +5 -5
- package/src/utilities/escapeLiteralValue.test.ts +7 -7
- package/src/utilities/escapeLiteralValue.ts +2 -2
- package/src/utilities/formatSlonikPlaceholder.ts +1 -1
- package/src/utilities/isPlainObject.ts +1 -1
- package/src/utilities/isPrimitiveValueExpression.ts +4 -4
- package/src/utilities/isSqlToken.ts +10 -12
- package/src/utilities/safeStringify.ts +3 -3
- package/src/utilities/stripArrayNotation.test.ts +6 -6
- package/src/utilities/stripArrayNotation.ts +1 -1
package/README.md
CHANGED
package/dist/Logger.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { PrimitiveValueExpression } from
|
|
1
|
+
import type { PrimitiveValueExpression } from "../types.js";
|
|
2
2
|
export declare const createPrimitiveValueExpressions: (values: readonly unknown[]) => readonly PrimitiveValueExpression[];
|
|
3
3
|
//# sourceMappingURL=createPrimitiveValueExpressions.d.ts.map
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { Logger } from
|
|
2
|
-
import { safeStringify } from
|
|
3
|
-
import { UnexpectedStateError } from
|
|
1
|
+
import { Logger } from "../Logger.js";
|
|
2
|
+
import { safeStringify } from "../utilities/safeStringify.js";
|
|
3
|
+
import { UnexpectedStateError } from "@slonik/errors";
|
|
4
4
|
const log = Logger.child({
|
|
5
|
-
namespace:
|
|
5
|
+
namespace: "createPrimitiveValueExpressions",
|
|
6
6
|
});
|
|
7
7
|
export const createPrimitiveValueExpressions = (values) => {
|
|
8
8
|
const primitiveValueExpressions = [];
|
|
9
9
|
for (const value of values) {
|
|
10
10
|
if (Array.isArray(value) ||
|
|
11
11
|
Buffer.isBuffer(value) ||
|
|
12
|
-
typeof value ===
|
|
13
|
-
typeof value ===
|
|
14
|
-
typeof value ===
|
|
15
|
-
typeof value ===
|
|
12
|
+
typeof value === "string" ||
|
|
13
|
+
typeof value === "number" ||
|
|
14
|
+
typeof value === "boolean" ||
|
|
15
|
+
typeof value === "bigint" ||
|
|
16
16
|
value === null) {
|
|
17
17
|
primitiveValueExpressions.push(value);
|
|
18
18
|
}
|
|
@@ -20,8 +20,8 @@ export const createPrimitiveValueExpressions = (values) => {
|
|
|
20
20
|
log.warn({
|
|
21
21
|
value: JSON.parse(safeStringify(value)),
|
|
22
22
|
values: JSON.parse(safeStringify(values)),
|
|
23
|
-
},
|
|
24
|
-
throw new UnexpectedStateError(
|
|
23
|
+
}, "unexpected value expression");
|
|
24
|
+
throw new UnexpectedStateError("Unexpected value expression.");
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
return primitiveValueExpressions;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { SqlTag } from
|
|
2
|
-
import type { StandardSchemaV1 } from
|
|
1
|
+
import type { SqlTag } from "../types.js";
|
|
2
|
+
import type { StandardSchemaV1 } from "@standard-schema/spec";
|
|
3
3
|
export declare const createSqlTag: <K extends PropertyKey, P extends StandardSchemaV1, Z extends Record<K, P>>(configuration?: {
|
|
4
4
|
typeAliases?: Z;
|
|
5
5
|
}) => SqlTag<Z>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSqlTag.d.ts","sourceRoot":"","sources":["../../src/factories/createSqlTag.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAIV,MAAM,EAGP,MAAM,aAAa,CAAC;AAQrB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"createSqlTag.d.ts","sourceRoot":"","sources":["../../src/factories/createSqlTag.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAIV,MAAM,EAGP,MAAM,aAAa,CAAC;AAQrB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAsE9D,eAAO,MAAM,YAAY,GACvB,CAAC,SAAS,WAAW,EACrB,CAAC,SAAS,gBAAgB,EAC1B,CAAC,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAEtB,gBAAe;IACb,WAAW,CAAC,EAAE,CAAC,CAAC;CACZ,KACL,MAAM,CAAC,CAAC,CAiIV,CAAC"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { Logger } from
|
|
2
|
-
import { ArrayToken, BinaryToken, DateToken, FragmentToken, IdentifierToken, IntervalToken, JsonBinaryToken, JsonToken, ListToken, QueryToken, TimestampToken, UnnestToken, UuidToken, } from
|
|
3
|
-
import { escapeLiteralValue } from
|
|
4
|
-
import { formatSlonikPlaceholder } from
|
|
5
|
-
import { isPrimitiveValueExpression } from
|
|
6
|
-
import { isSqlToken } from
|
|
7
|
-
import { safeStringify } from
|
|
8
|
-
import { createSqlTokenSqlFragment } from
|
|
9
|
-
import { InvalidInputError } from
|
|
10
|
-
import { z } from
|
|
1
|
+
import { Logger } from "../Logger.js";
|
|
2
|
+
import { ArrayToken, BinaryToken, DateToken, FragmentToken, IdentifierToken, IntervalToken, JsonBinaryToken, JsonToken, ListToken, QueryToken, TimestampToken, UnnestToken, UuidToken, } from "../tokens.js";
|
|
3
|
+
import { escapeLiteralValue } from "../utilities/escapeLiteralValue.js";
|
|
4
|
+
import { formatSlonikPlaceholder } from "../utilities/formatSlonikPlaceholder.js";
|
|
5
|
+
import { isPrimitiveValueExpression } from "../utilities/isPrimitiveValueExpression.js";
|
|
6
|
+
import { isSqlToken } from "../utilities/isSqlToken.js";
|
|
7
|
+
import { safeStringify } from "../utilities/safeStringify.js";
|
|
8
|
+
import { createSqlTokenSqlFragment } from "./createSqlTokenSqlFragment.js";
|
|
9
|
+
import { InvalidInputError } from "@slonik/errors";
|
|
10
|
+
import { z } from "zod";
|
|
11
11
|
const log = Logger.child({
|
|
12
|
-
namespace:
|
|
12
|
+
namespace: "sql",
|
|
13
13
|
});
|
|
14
14
|
const createFragment = (parts, values) => {
|
|
15
15
|
if (!Array.isArray(parts.raw) || !Object.isFrozen(parts.raw)) {
|
|
16
|
-
throw new InvalidInputError(
|
|
16
|
+
throw new InvalidInputError("Function must be called as a template literal.");
|
|
17
17
|
}
|
|
18
|
-
let rawSql =
|
|
18
|
+
let rawSql = "";
|
|
19
19
|
const parameterValues = [];
|
|
20
20
|
let index = 0;
|
|
21
21
|
for (const part of parts) {
|
|
@@ -29,7 +29,7 @@ const createFragment = (parts, values) => {
|
|
|
29
29
|
index,
|
|
30
30
|
parts: JSON.parse(safeStringify(parts)),
|
|
31
31
|
values: JSON.parse(safeStringify(values)),
|
|
32
|
-
},
|
|
32
|
+
}, "bound values");
|
|
33
33
|
throw new InvalidInputError(`SQL tag cannot be bound to undefined value at index ${index}.`);
|
|
34
34
|
}
|
|
35
35
|
else if (isPrimitiveValueExpression(token)) {
|
|
@@ -48,8 +48,8 @@ const createFragment = (parts, values) => {
|
|
|
48
48
|
constructedSql: rawSql,
|
|
49
49
|
index,
|
|
50
50
|
offendingToken: JSON.parse(safeStringify(token)),
|
|
51
|
-
},
|
|
52
|
-
throw new TypeError(
|
|
51
|
+
}, "unexpected value expression");
|
|
52
|
+
throw new TypeError("Unexpected value expression.");
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSqlTag.js","sourceRoot":"","sources":["../../src/factories/createSqlTag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EACL,UAAU,EACV,WAAW,EACX,SAAS,EACT,aAAa,EACb,eAAe,EACf,aAAa,EACb,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,EACV,cAAc,EACd,WAAW,EACX,SAAS,GACV,MAAM,cAAc,CAAC;AAStB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;IACvB,SAAS,EAAE,KAAK;CACjB,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,
|
|
1
|
+
{"version":3,"file":"createSqlTag.js","sourceRoot":"","sources":["../../src/factories/createSqlTag.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { FragmentToken } from
|
|
2
|
-
import { createSqlTag } from
|
|
3
|
-
import test from
|
|
1
|
+
import { FragmentToken } from "../../tokens.js";
|
|
2
|
+
import { createSqlTag } from "../createSqlTag.js";
|
|
3
|
+
import test from "ava";
|
|
4
4
|
const sql = createSqlTag();
|
|
5
|
-
test(
|
|
6
|
-
const query = sql.fragment `SELECT ${sql.array([],
|
|
5
|
+
test("binds an empty array", (t) => {
|
|
6
|
+
const query = sql.fragment `SELECT ${sql.array([], "int4")}`;
|
|
7
7
|
t.deepEqual(query, {
|
|
8
8
|
sql: 'SELECT $slonik_1::"int4"[]',
|
|
9
9
|
type: FragmentToken,
|
|
10
10
|
values: [[]],
|
|
11
11
|
});
|
|
12
12
|
});
|
|
13
|
-
test(
|
|
13
|
+
test("binds bigint", (t) => {
|
|
14
14
|
const query = sql.fragment `SELECT ${sql.array(
|
|
15
15
|
// eslint-disable-next-line unicorn/numeric-separators-style
|
|
16
|
-
[9007199254740999n],
|
|
16
|
+
[9007199254740999n], "int8")}`;
|
|
17
17
|
t.deepEqual(query, {
|
|
18
18
|
sql: 'SELECT $slonik_1::"int8"[]',
|
|
19
19
|
type: FragmentToken,
|
|
@@ -21,51 +21,51 @@ test('binds bigint', (t) => {
|
|
|
21
21
|
values: [[BigInt(9007199254740999n)]],
|
|
22
22
|
});
|
|
23
23
|
});
|
|
24
|
-
test(
|
|
25
|
-
const query = sql.fragment `SELECT ${sql.array([1, 2, 3],
|
|
24
|
+
test("binds an array with multiple values", (t) => {
|
|
25
|
+
const query = sql.fragment `SELECT ${sql.array([1, 2, 3], "int4")}`;
|
|
26
26
|
t.deepEqual(query, {
|
|
27
27
|
sql: 'SELECT $slonik_1::"int4"[]',
|
|
28
28
|
type: FragmentToken,
|
|
29
29
|
values: [[1, 2, 3]],
|
|
30
30
|
});
|
|
31
31
|
});
|
|
32
|
-
test(
|
|
33
|
-
const query = sql.fragment `SELECT ${sql.array([Buffer.from(
|
|
32
|
+
test("binds an array with bytea values", (t) => {
|
|
33
|
+
const query = sql.fragment `SELECT ${sql.array([Buffer.from("foo")], "bytea")}`;
|
|
34
34
|
t.deepEqual(query, {
|
|
35
35
|
sql: 'SELECT $slonik_1::"bytea"[]',
|
|
36
36
|
type: FragmentToken,
|
|
37
|
-
values: [[Buffer.from(
|
|
37
|
+
values: [[Buffer.from("foo")]],
|
|
38
38
|
});
|
|
39
39
|
});
|
|
40
|
-
test(
|
|
41
|
-
const query = sql.fragment `SELECT ${1}, ${sql.array([1, 2, 3],
|
|
40
|
+
test("offsets positional parameter indexes", (t) => {
|
|
41
|
+
const query = sql.fragment `SELECT ${1}, ${sql.array([1, 2, 3], "int4")}, ${3}`;
|
|
42
42
|
t.deepEqual(query, {
|
|
43
43
|
sql: 'SELECT $slonik_1, $slonik_2::"int4"[], $slonik_3',
|
|
44
44
|
type: FragmentToken,
|
|
45
45
|
values: [1, [1, 2, 3], 3],
|
|
46
46
|
});
|
|
47
47
|
});
|
|
48
|
-
test(
|
|
48
|
+
test("binds a SQL token", (t) => {
|
|
49
49
|
const query = sql.fragment `SELECT ${sql.array([1, 2, 3], sql.fragment `int[]`)}`;
|
|
50
50
|
t.deepEqual(query, {
|
|
51
|
-
sql:
|
|
51
|
+
sql: "SELECT $slonik_1::int[]",
|
|
52
52
|
type: FragmentToken,
|
|
53
53
|
values: [[1, 2, 3]],
|
|
54
54
|
});
|
|
55
55
|
});
|
|
56
|
-
test(
|
|
56
|
+
test("throws if array member is not a primitive value expression", (t) => {
|
|
57
57
|
const error = t.throws(() => {
|
|
58
58
|
sql.fragment `SELECT ${sql.array([
|
|
59
59
|
// @ts-expect-error - intentional
|
|
60
60
|
() => { },
|
|
61
|
-
],
|
|
61
|
+
], "int")}`;
|
|
62
62
|
});
|
|
63
|
-
t.is(error?.message,
|
|
63
|
+
t.is(error?.message, "Invalid array member type. Must be a primitive value expression.");
|
|
64
64
|
});
|
|
65
65
|
test('throws if memberType is not a string or SqlToken of different type than "SLONIK_TOKEN_FRAGMENT"', (t) => {
|
|
66
66
|
const error = t.throws(() => {
|
|
67
67
|
// @ts-expect-error - intentional
|
|
68
|
-
sql.fragment `SELECT ${sql.array([1, 2, 3], sql.identifier([
|
|
68
|
+
sql.fragment `SELECT ${sql.array([1, 2, 3], sql.identifier(["int"]))}`;
|
|
69
69
|
});
|
|
70
70
|
t.is(error?.message, 'Unsupported `memberType`. `memberType` must be a string or SqlToken of "SLONIK_TOKEN_FRAGMENT" type.');
|
|
71
71
|
});
|
|
@@ -75,9 +75,9 @@ function assertType(_value) {
|
|
|
75
75
|
// This function exists only for type checking
|
|
76
76
|
}
|
|
77
77
|
test('produces ArraySqlToken<"int4"> for integer arrays', (t) => {
|
|
78
|
-
const arrayToken = sql.array([1, 2, 3],
|
|
78
|
+
const arrayToken = sql.array([1, 2, 3], "int4");
|
|
79
79
|
assertType(arrayToken);
|
|
80
|
-
t.is(arrayToken.memberType,
|
|
80
|
+
t.is(arrayToken.memberType, "int4");
|
|
81
81
|
t.deepEqual(arrayToken.values, [1, 2, 3]);
|
|
82
82
|
const query = sql.fragment `SELECT ${arrayToken}`;
|
|
83
83
|
t.deepEqual(query, {
|
|
@@ -87,36 +87,36 @@ test('produces ArraySqlToken<"int4"> for integer arrays', (t) => {
|
|
|
87
87
|
});
|
|
88
88
|
});
|
|
89
89
|
test('produces ArraySqlToken<"text"> for text arrays', (t) => {
|
|
90
|
-
const arrayToken = sql.array([
|
|
90
|
+
const arrayToken = sql.array(["a", "b", "c"], "text");
|
|
91
91
|
assertType(arrayToken);
|
|
92
|
-
t.is(arrayToken.memberType,
|
|
93
|
-
t.deepEqual(arrayToken.values, [
|
|
92
|
+
t.is(arrayToken.memberType, "text");
|
|
93
|
+
t.deepEqual(arrayToken.values, ["a", "b", "c"]);
|
|
94
94
|
const query = sql.fragment `SELECT ${arrayToken}`;
|
|
95
95
|
t.deepEqual(query, {
|
|
96
96
|
sql: 'SELECT $slonik_1::"text"[]',
|
|
97
97
|
type: FragmentToken,
|
|
98
|
-
values: [[
|
|
98
|
+
values: [["a", "b", "c"]],
|
|
99
99
|
});
|
|
100
100
|
});
|
|
101
|
-
test(
|
|
102
|
-
const int8Array = sql.array([1n, 2n],
|
|
101
|
+
test("type inference with different PostgreSQL types", (t) => {
|
|
102
|
+
const int8Array = sql.array([1n, 2n], "int8");
|
|
103
103
|
assertType(int8Array);
|
|
104
|
-
t.is(int8Array.memberType,
|
|
105
|
-
const float8Array = sql.array([1.1, 2.2, 3.3],
|
|
104
|
+
t.is(int8Array.memberType, "int8");
|
|
105
|
+
const float8Array = sql.array([1.1, 2.2, 3.3], "float8");
|
|
106
106
|
assertType(float8Array);
|
|
107
|
-
t.is(float8Array.memberType,
|
|
108
|
-
const boolArray = sql.array([true, false, true],
|
|
107
|
+
t.is(float8Array.memberType, "float8");
|
|
108
|
+
const boolArray = sql.array([true, false, true], "bool");
|
|
109
109
|
assertType(boolArray);
|
|
110
|
-
t.is(boolArray.memberType,
|
|
111
|
-
const uuidArray = sql.array([
|
|
110
|
+
t.is(boolArray.memberType, "bool");
|
|
111
|
+
const uuidArray = sql.array(["550e8400-e29b-41d4-a716-446655440000"], "uuid");
|
|
112
112
|
assertType(uuidArray);
|
|
113
|
-
t.is(uuidArray.memberType,
|
|
114
|
-
const timestampArray = sql.array([new Date().toISOString()],
|
|
113
|
+
t.is(uuidArray.memberType, "uuid");
|
|
114
|
+
const timestampArray = sql.array([new Date().toISOString()], "timestamp");
|
|
115
115
|
assertType(timestampArray);
|
|
116
|
-
t.is(timestampArray.memberType,
|
|
117
|
-
const jsonbArray = sql.array([JSON.stringify({ key:
|
|
116
|
+
t.is(timestampArray.memberType, "timestamp");
|
|
117
|
+
const jsonbArray = sql.array([JSON.stringify({ key: "value" })], "jsonb");
|
|
118
118
|
assertType(jsonbArray);
|
|
119
|
-
t.is(jsonbArray.memberType,
|
|
119
|
+
t.is(jsonbArray.memberType, "jsonb");
|
|
120
120
|
const query = sql.fragment `
|
|
121
121
|
SELECT
|
|
122
122
|
${int8Array} as int8_arr,
|
|
@@ -127,17 +127,17 @@ test('type inference with different PostgreSQL types', (t) => {
|
|
|
127
127
|
t.truthy(query.sql.includes('::"float8"[]'));
|
|
128
128
|
t.truthy(query.sql.includes('::"bool"[]'));
|
|
129
129
|
});
|
|
130
|
-
test(
|
|
131
|
-
const arrayToken = sql.array([1, 2, 3],
|
|
130
|
+
test("backward compatibility - existing code without explicit types still works", (t) => {
|
|
131
|
+
const arrayToken = sql.array([1, 2, 3], "int4");
|
|
132
132
|
const token = arrayToken;
|
|
133
|
-
t.is(token.memberType,
|
|
133
|
+
t.is(token.memberType, "int4");
|
|
134
134
|
const fragmentArray = sql.array([1, 2, 3], sql.fragment `int[]`);
|
|
135
|
-
t.is(typeof fragmentArray.memberType,
|
|
135
|
+
t.is(typeof fragmentArray.memberType, "object");
|
|
136
136
|
t.is(fragmentArray.memberType.type, FragmentToken);
|
|
137
137
|
t.deepEqual(fragmentArray.values, [1, 2, 3]);
|
|
138
138
|
const query = sql.fragment `SELECT ${fragmentArray}`;
|
|
139
139
|
t.deepEqual(query, {
|
|
140
|
-
sql:
|
|
140
|
+
sql: "SELECT $slonik_1::int[]",
|
|
141
141
|
type: FragmentToken,
|
|
142
142
|
values: [[1, 2, 3]],
|
|
143
143
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.test.js","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/array.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,IAAI,MAAM,KAAK,CAAC;AAEvB,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;AAE3B,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,EAAE;IACjC,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;IAE5D,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,4BAA4B;QACjC,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,CAAC,EAAE,CAAC;KACb,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE;IACzB,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,KAAK;IAC3C,4DAA4D;IAC5D,CAAC,iBAAiB,CAAC,EACnB,MAAM,CACP,EAAE,CAAC;IAEJ,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,4BAA4B;QACjC,IAAI,EAAE,aAAa;QACnB,4DAA4D;QAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;KACtC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qCAAqC,EAAE,CAAC,CAAC,EAAE,EAAE;IAChD,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;IAEnE,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,4BAA4B;QACjC,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACpB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kCAAkC,EAAE,CAAC,CAAC,EAAE,EAAE;IAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"array.test.js","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/array.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { FragmentToken } from
|
|
2
|
-
import { createSqlTag } from
|
|
3
|
-
import test from
|
|
1
|
+
import { FragmentToken } from "../../tokens.js";
|
|
2
|
+
import { createSqlTag } from "../createSqlTag.js";
|
|
3
|
+
import test from "ava";
|
|
4
4
|
const sql = createSqlTag();
|
|
5
|
-
test(
|
|
6
|
-
const query = sql.fragment `SELECT ${sql.date(new Date(
|
|
5
|
+
test("binds a date", (t) => {
|
|
6
|
+
const query = sql.fragment `SELECT ${sql.date(new Date("2022-08-19T03:27:24.951Z"))}`;
|
|
7
7
|
t.deepEqual(query, {
|
|
8
|
-
sql:
|
|
8
|
+
sql: "SELECT $slonik_1::date",
|
|
9
9
|
type: FragmentToken,
|
|
10
|
-
values: [
|
|
10
|
+
values: ["2022-08-19"],
|
|
11
11
|
});
|
|
12
12
|
});
|
|
13
|
-
test(
|
|
13
|
+
test("throws if not instance of Date", (t) => {
|
|
14
14
|
const error = t.throws(() => {
|
|
15
15
|
// @ts-expect-error - intentional
|
|
16
16
|
sql.fragment `SELECT ${sql.date(1)}`;
|
|
17
17
|
});
|
|
18
|
-
t.is(error?.message,
|
|
18
|
+
t.is(error?.message, "Date parameter value must be an instance of Date.");
|
|
19
19
|
});
|
|
20
20
|
//# sourceMappingURL=date.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.test.js","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/date.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,IAAI,MAAM,KAAK,CAAC;AAEvB,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;AAE3B,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE;IACzB,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"date.test.js","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/date.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,IAAI,MAAM,KAAK,CAAC;AAEvB,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;AAE3B,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE;IACzB,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC;IAErF,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,wBAAwB;QAC7B,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,CAAC,YAAY,CAAC;KACvB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gCAAgC,EAAE,CAAC,CAAC,EAAE,EAAE;IAC3C,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;QAC1B,iCAAiC;QACjC,GAAG,CAAC,QAAQ,CAAA,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,mDAAmD,CAAC,CAAC;AAC5E,CAAC,CAAC,CAAC"}
|
|
@@ -1,33 +1,30 @@
|
|
|
1
|
-
import { FragmentToken } from
|
|
2
|
-
import { createSqlTag } from
|
|
3
|
-
import test from
|
|
1
|
+
import { FragmentToken } from "../../tokens.js";
|
|
2
|
+
import { createSqlTag } from "../createSqlTag.js";
|
|
3
|
+
import test from "ava";
|
|
4
4
|
const sql = createSqlTag();
|
|
5
|
-
test(
|
|
6
|
-
const query = sql.fragment `SELECT ${
|
|
5
|
+
test("creates an object describing a query with inlined identifiers", (t) => {
|
|
6
|
+
const query = sql.fragment `SELECT ${"foo"} FROM ${sql.identifier(["bar"])}`;
|
|
7
7
|
t.deepEqual(query, {
|
|
8
8
|
sql: 'SELECT $slonik_1 FROM "bar"',
|
|
9
9
|
type: FragmentToken,
|
|
10
|
-
values: [
|
|
10
|
+
values: ["foo"],
|
|
11
11
|
});
|
|
12
12
|
});
|
|
13
|
-
test(
|
|
14
|
-
const query = sql.fragment `SELECT ${
|
|
15
|
-
'bar',
|
|
16
|
-
'baz',
|
|
17
|
-
])}`;
|
|
13
|
+
test("creates an object describing a query with inlined identifiers (specifier)", (t) => {
|
|
14
|
+
const query = sql.fragment `SELECT ${"foo"} FROM ${sql.identifier(["bar", "baz"])}`;
|
|
18
15
|
t.deepEqual(query, {
|
|
19
16
|
sql: 'SELECT $slonik_1 FROM "bar"."baz"',
|
|
20
17
|
type: FragmentToken,
|
|
21
|
-
values: [
|
|
18
|
+
values: ["foo"],
|
|
22
19
|
});
|
|
23
20
|
});
|
|
24
|
-
test(
|
|
21
|
+
test("throws if an identifier name array member type is not a string", (t) => {
|
|
25
22
|
const error = t.throws(() => {
|
|
26
23
|
sql.fragment `${sql.identifier([
|
|
27
24
|
// @ts-expect-error - intentional
|
|
28
25
|
() => { },
|
|
29
26
|
])}`;
|
|
30
27
|
});
|
|
31
|
-
t.is(error?.message,
|
|
28
|
+
t.is(error?.message, "Identifier name array member type must be a string.");
|
|
32
29
|
});
|
|
33
30
|
//# sourceMappingURL=identifier.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identifier.test.js","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/identifier.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,IAAI,MAAM,KAAK,CAAC;AAEvB,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;AAE3B,IAAI,CAAC,+DAA+D,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1E,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,KAAK,SAAS,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;IAE5E,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,6BAA6B;QAClC,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,CAAC,KAAK,CAAC;KAChB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2EAA2E,EAAE,CAAC,CAAC,EAAE,EAAE;IACtF,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,KAAK,SAAS,GAAG,CAAC,UAAU,CAAC
|
|
1
|
+
{"version":3,"file":"identifier.test.js","sourceRoot":"","sources":["../../../src/factories/createSqlTag.test/identifier.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,IAAI,MAAM,KAAK,CAAC;AAEvB,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;AAE3B,IAAI,CAAC,+DAA+D,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1E,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,KAAK,SAAS,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;IAE5E,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,6BAA6B;QAClC,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,CAAC,KAAK,CAAC;KAChB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2EAA2E,EAAE,CAAC,CAAC,EAAE,EAAE;IACtF,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA,UAAU,KAAK,SAAS,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;IAEnF,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,mCAAmC;QACxC,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,CAAC,KAAK,CAAC;KAChB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gEAAgE,EAAE,CAAC,CAAC,EAAE,EAAE;IAC3E,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;QAC1B,GAAG,CAAC,QAAQ,CAAA,GAAG,GAAG,CAAC,UAAU,CAAC;YAC5B,iCAAiC;YACjC,GAAG,EAAE,GAAE,CAAC;SACT,CAAC,EAAE,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,qDAAqD,CAAC,CAAC;AAC9E,CAAC,CAAC,CAAC"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { FragmentToken } from
|
|
2
|
-
import { createSqlTag } from
|
|
3
|
-
import test from
|
|
1
|
+
import { FragmentToken } from "../../tokens.js";
|
|
2
|
+
import { createSqlTag } from "../createSqlTag.js";
|
|
3
|
+
import test from "ava";
|
|
4
4
|
const sql = createSqlTag();
|
|
5
|
-
test(
|
|
5
|
+
test("creates an empty make_interval invocation", (t) => {
|
|
6
6
|
const query = sql.fragment `SELECT ${sql.interval({})}`;
|
|
7
7
|
t.deepEqual(query, {
|
|
8
|
-
sql:
|
|
8
|
+
sql: "SELECT make_interval()",
|
|
9
9
|
type: FragmentToken,
|
|
10
10
|
values: [],
|
|
11
11
|
});
|
|
12
12
|
});
|
|
13
|
-
test(
|
|
13
|
+
test("creates an interval", (t) => {
|
|
14
14
|
const query = sql.fragment `SELECT ${sql.interval({
|
|
15
15
|
days: 4,
|
|
16
16
|
hours: 5,
|
|
@@ -21,18 +21,18 @@ test('creates an interval', (t) => {
|
|
|
21
21
|
years: 1,
|
|
22
22
|
})}`;
|
|
23
23
|
t.deepEqual(query, {
|
|
24
|
-
sql:
|
|
24
|
+
sql: "SELECT make_interval(years => $slonik_1, months => $slonik_2, weeks => $slonik_3, days => $slonik_4, hours => $slonik_5, mins => $slonik_6, secs => $slonik_7)",
|
|
25
25
|
type: FragmentToken,
|
|
26
26
|
values: [1, 2, 3, 4, 5, 6, 7],
|
|
27
27
|
});
|
|
28
28
|
});
|
|
29
|
-
test(
|
|
29
|
+
test("throws if contains unknown properties", (t) => {
|
|
30
30
|
const error = t.throws(() => {
|
|
31
31
|
sql.fragment `SELECT ${sql.interval({
|
|
32
32
|
// @ts-expect-error - intentional
|
|
33
|
-
foo:
|
|
33
|
+
foo: "bar",
|
|
34
34
|
})}`;
|
|
35
35
|
});
|
|
36
|
-
t.is(error?.message,
|
|
36
|
+
t.is(error?.message, "Interval input must not contain unknown properties.");
|
|
37
37
|
});
|
|
38
38
|
//# sourceMappingURL=interval.test.js.map
|
|
@@ -1,82 +1,82 @@
|
|
|
1
|
-
import { FragmentToken } from
|
|
2
|
-
import { createSqlTag } from
|
|
3
|
-
import test from
|
|
1
|
+
import { FragmentToken } from "../../tokens.js";
|
|
2
|
+
import { createSqlTag } from "../createSqlTag.js";
|
|
3
|
+
import test from "ava";
|
|
4
4
|
const sql = createSqlTag();
|
|
5
|
-
test(
|
|
5
|
+
test("creates a list of values", (t) => {
|
|
6
6
|
const query = sql.fragment `SELECT (${sql.join([1, 2, 3], sql.fragment `, `)})`;
|
|
7
7
|
t.deepEqual(query, {
|
|
8
|
-
sql:
|
|
8
|
+
sql: "SELECT ($slonik_1, $slonik_2, $slonik_3)",
|
|
9
9
|
type: FragmentToken,
|
|
10
10
|
values: [1, 2, 3],
|
|
11
11
|
});
|
|
12
12
|
});
|
|
13
|
-
test(
|
|
13
|
+
test("creates a list of values using glue", (t) => {
|
|
14
14
|
const query = sql.fragment `SELECT ${sql.join([sql.fragment `TRUE`, sql.fragment `TRUE`], sql.fragment ` AND `)}`;
|
|
15
15
|
t.deepEqual(query, {
|
|
16
|
-
sql:
|
|
16
|
+
sql: "SELECT TRUE AND TRUE",
|
|
17
17
|
type: FragmentToken,
|
|
18
18
|
values: [],
|
|
19
19
|
});
|
|
20
20
|
});
|
|
21
|
-
test(
|
|
21
|
+
test("interpolates SQL tokens", (t) => {
|
|
22
22
|
const query = sql.fragment `SELECT (${sql.join([1, sql.fragment `foo`, 3], sql.fragment `, `)})`;
|
|
23
23
|
t.deepEqual(query, {
|
|
24
|
-
sql:
|
|
24
|
+
sql: "SELECT ($slonik_1, foo, $slonik_2)",
|
|
25
25
|
type: FragmentToken,
|
|
26
26
|
values: [1, 3],
|
|
27
27
|
});
|
|
28
28
|
});
|
|
29
|
-
test(
|
|
29
|
+
test("interpolates SQL tokens with bound values", (t) => {
|
|
30
30
|
const query = sql.fragment `SELECT ${sql.join([1, sql.fragment `to_timestamp(${2}), ${3}`, 4], sql.fragment `, `)}`;
|
|
31
31
|
t.deepEqual(query, {
|
|
32
|
-
sql:
|
|
32
|
+
sql: "SELECT $slonik_1, to_timestamp($slonik_2), $slonik_3, $slonik_4",
|
|
33
33
|
type: FragmentToken,
|
|
34
34
|
values: [1, 2, 3, 4],
|
|
35
35
|
});
|
|
36
36
|
});
|
|
37
|
-
test(
|
|
37
|
+
test("offsets positional parameter indexes", (t) => {
|
|
38
38
|
const query = sql.fragment `SELECT ${1}, ${sql.join([1, sql.fragment `to_timestamp(${2}), ${3}`, 4], sql.fragment `, `)}, ${3}`;
|
|
39
39
|
t.deepEqual(query, {
|
|
40
|
-
sql:
|
|
40
|
+
sql: "SELECT $slonik_1, $slonik_2, to_timestamp($slonik_3), $slonik_4, $slonik_5, $slonik_6",
|
|
41
41
|
type: FragmentToken,
|
|
42
42
|
values: [1, 1, 2, 3, 4, 3],
|
|
43
43
|
});
|
|
44
44
|
});
|
|
45
|
-
test(
|
|
45
|
+
test("supports bigint", (t) => {
|
|
46
46
|
const query = sql.fragment `SELECT ${1n}, ${sql.join([sql.fragment `to_timestamp(${2n})`, 3n], sql.fragment `, `)}, ${4n}`;
|
|
47
47
|
t.deepEqual(query, {
|
|
48
|
-
sql:
|
|
48
|
+
sql: "SELECT $slonik_1, to_timestamp($slonik_2), $slonik_3, $slonik_4",
|
|
49
49
|
type: FragmentToken,
|
|
50
50
|
values: [1n, 2n, 3n, 4n],
|
|
51
51
|
});
|
|
52
52
|
});
|
|
53
|
-
test(
|
|
53
|
+
test("nests expressions", (t) => {
|
|
54
54
|
const query = sql.fragment `SELECT ${sql.join([
|
|
55
55
|
sql.fragment `(${sql.join([1, 2], sql.fragment `, `)})`,
|
|
56
56
|
sql.fragment `(${sql.join([3, 4], sql.fragment `, `)})`,
|
|
57
57
|
], sql.fragment `, `)}`;
|
|
58
58
|
t.deepEqual(query, {
|
|
59
|
-
sql:
|
|
59
|
+
sql: "SELECT ($slonik_1, $slonik_2), ($slonik_3, $slonik_4)",
|
|
60
60
|
type: FragmentToken,
|
|
61
61
|
values: [1, 2, 3, 4],
|
|
62
62
|
});
|
|
63
63
|
});
|
|
64
|
-
test(
|
|
65
|
-
const data = Buffer.from(
|
|
66
|
-
const query = sql.fragment `SELECT (${sql.join([
|
|
64
|
+
test("binary join expressions", (t) => {
|
|
65
|
+
const data = Buffer.from("1f", "hex");
|
|
66
|
+
const query = sql.fragment `SELECT (${sql.join(["a", sql.binary(data)], sql.fragment `, `)})`;
|
|
67
67
|
t.deepEqual(query, {
|
|
68
|
-
sql:
|
|
68
|
+
sql: "SELECT ($slonik_1, $slonik_2)",
|
|
69
69
|
type: FragmentToken,
|
|
70
|
-
values: [
|
|
70
|
+
values: ["a", data],
|
|
71
71
|
});
|
|
72
72
|
});
|
|
73
|
-
test(
|
|
73
|
+
test("throws is member is not a SQL token or a primitive value expression", (t) => {
|
|
74
74
|
const error = t.throws(() => {
|
|
75
75
|
sql.fragment `${sql.join([
|
|
76
76
|
// @ts-expect-error - intentional
|
|
77
77
|
() => { },
|
|
78
78
|
], sql.fragment `, `)}`;
|
|
79
79
|
});
|
|
80
|
-
t.is(error?.message,
|
|
80
|
+
t.is(error?.message, "Invalid list member type. Must be a SQL token or a primitive value expression.");
|
|
81
81
|
});
|
|
82
82
|
//# sourceMappingURL=join.test.js.map
|