drizzle-databend 0.1.11 → 0.1.13
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/dist/columns.d.ts +25 -37
- package/dist/databend-core/alias.d.ts +1 -0
- package/dist/databend-core/columns/all.d.ts +35 -0
- package/dist/databend-core/columns/array.d.ts +16 -0
- package/dist/databend-core/columns/bigint.d.ts +24 -0
- package/dist/databend-core/columns/binary.d.ts +13 -0
- package/dist/databend-core/columns/bitmap.d.ts +13 -0
- package/dist/databend-core/columns/boolean.d.ts +13 -0
- package/dist/databend-core/columns/common.d.ts +45 -0
- package/dist/databend-core/columns/custom.d.ts +33 -0
- package/dist/databend-core/columns/date.d.ts +16 -0
- package/dist/databend-core/columns/decimal.d.ts +19 -0
- package/dist/databend-core/columns/double.d.ts +14 -0
- package/dist/databend-core/columns/float.d.ts +14 -0
- package/dist/databend-core/columns/index.d.ts +21 -0
- package/dist/databend-core/columns/integer.d.ts +13 -0
- package/dist/databend-core/columns/map.d.ts +17 -0
- package/dist/databend-core/columns/smallint.d.ts +13 -0
- package/dist/databend-core/columns/text.d.ts +13 -0
- package/dist/databend-core/columns/timestamp.d.ts +16 -0
- package/dist/databend-core/columns/tinyint.d.ts +13 -0
- package/dist/databend-core/columns/tuple.d.ts +16 -0
- package/dist/databend-core/columns/varchar.d.ts +17 -0
- package/dist/databend-core/columns/variant.d.ts +15 -0
- package/dist/databend-core/db.d.ts +31 -0
- package/dist/databend-core/dialect.d.ts +29 -0
- package/dist/databend-core/index.d.ts +18 -0
- package/dist/databend-core/indexes.d.ts +24 -0
- package/dist/databend-core/primary-keys.d.ts +20 -0
- package/dist/databend-core/query-builders/count.d.ts +18 -0
- package/dist/databend-core/query-builders/delete.d.ts +18 -0
- package/dist/databend-core/query-builders/index.d.ts +5 -0
- package/dist/databend-core/query-builders/insert.d.ts +27 -0
- package/dist/databend-core/query-builders/query-builder.d.ts +19 -0
- package/dist/databend-core/query-builders/query.d.ts +37 -0
- package/dist/databend-core/query-builders/raw.d.ts +17 -0
- package/dist/databend-core/query-builders/select.d.ts +66 -0
- package/dist/databend-core/query-builders/update.d.ts +27 -0
- package/dist/databend-core/schema.d.ts +12 -0
- package/dist/databend-core/session.d.ts +28 -0
- package/dist/databend-core/subquery.d.ts +1 -0
- package/dist/databend-core/table.d.ts +12 -0
- package/dist/databend-core/utils.d.ts +7 -0
- package/dist/databend-core/view-base.d.ts +5 -0
- package/dist/databend-core/view-common.d.ts +1 -0
- package/dist/databend-core/view.d.ts +30 -0
- package/dist/dialect.d.ts +1 -10
- package/dist/driver.d.ts +4 -4
- package/dist/index.d.ts +10 -0
- package/dist/index.mjs +2611 -205
- package/dist/session.d.ts +22 -19
- package/dist/sql/result-mapper.d.ts +2 -3
- package/dist/sql/selection.d.ts +2 -1
- package/package.json +4 -4
- package/src/columns.ts +8 -7
- package/src/databend-core/alias.ts +5 -0
- package/src/databend-core/columns/all.ts +38 -0
- package/src/databend-core/columns/array.ts +46 -0
- package/src/databend-core/columns/bigint.ts +52 -0
- package/src/databend-core/columns/binary.ts +27 -0
- package/src/databend-core/columns/bitmap.ts +27 -0
- package/src/databend-core/columns/boolean.ts +27 -0
- package/src/databend-core/columns/common.ts +97 -0
- package/src/databend-core/columns/custom.ts +86 -0
- package/src/databend-core/columns/date.ts +49 -0
- package/src/databend-core/columns/decimal.ts +44 -0
- package/src/databend-core/columns/double.ts +34 -0
- package/src/databend-core/columns/float.ts +31 -0
- package/src/databend-core/columns/index.ts +21 -0
- package/src/databend-core/columns/integer.ts +27 -0
- package/src/databend-core/columns/map.ts +49 -0
- package/src/databend-core/columns/smallint.ts +27 -0
- package/src/databend-core/columns/text.ts +27 -0
- package/src/databend-core/columns/timestamp.ts +51 -0
- package/src/databend-core/columns/tinyint.ts +27 -0
- package/src/databend-core/columns/tuple.ts +46 -0
- package/src/databend-core/columns/varchar.ts +35 -0
- package/src/databend-core/columns/variant.ts +45 -0
- package/src/databend-core/db.ts +153 -0
- package/src/databend-core/dialect.ts +725 -0
- package/src/databend-core/index.ts +18 -0
- package/src/databend-core/indexes.ts +67 -0
- package/src/databend-core/primary-keys.ts +48 -0
- package/src/databend-core/query-builders/count.ts +47 -0
- package/src/databend-core/query-builders/delete.ts +56 -0
- package/src/databend-core/query-builders/index.ts +5 -0
- package/src/databend-core/query-builders/insert.ts +105 -0
- package/src/databend-core/query-builders/query-builder.ts +77 -0
- package/src/databend-core/query-builders/query.ts +124 -0
- package/src/databend-core/query-builders/raw.ts +37 -0
- package/src/databend-core/query-builders/select.ts +412 -0
- package/src/databend-core/query-builders/update.ts +82 -0
- package/src/databend-core/schema.ts +29 -0
- package/src/databend-core/session.ts +85 -0
- package/src/databend-core/subquery.ts +1 -0
- package/src/databend-core/table.ts +67 -0
- package/src/databend-core/utils.ts +34 -0
- package/src/databend-core/view-base.ts +6 -0
- package/src/databend-core/view-common.ts +1 -0
- package/src/databend-core/view.ts +127 -0
- package/src/dialect.ts +3 -119
- package/src/driver.ts +6 -7
- package/src/index.ts +27 -0
- package/src/migrator.ts +1 -2
- package/src/session.ts +42 -57
- package/src/sql/result-mapper.ts +12 -54
- package/src/sql/selection.ts +2 -1
package/src/sql/result-mapper.ts
CHANGED
|
@@ -7,14 +7,9 @@ import {
|
|
|
7
7
|
type SelectedFieldsOrdered,
|
|
8
8
|
SQL,
|
|
9
9
|
} from 'drizzle-orm';
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
PgDateString,
|
|
14
|
-
PgTime,
|
|
15
|
-
PgTimestamp,
|
|
16
|
-
PgTimestampString,
|
|
17
|
-
} from 'drizzle-orm/pg-core';
|
|
10
|
+
import { DatabendCustomColumn } from '../databend-core/columns/custom.ts';
|
|
11
|
+
import { DatabendDate } from '../databend-core/columns/date.ts';
|
|
12
|
+
import { DatabendTimestamp } from '../databend-core/columns/timestamp.ts';
|
|
18
13
|
|
|
19
14
|
type SQLInternal<T = unknown> = SQL<T> & {
|
|
20
15
|
decoder: DriverValueDecoder<T, any>;
|
|
@@ -33,25 +28,21 @@ function toDecoderInput<TDecoder extends DriverValueDecoder<unknown, unknown>>(
|
|
|
33
28
|
|
|
34
29
|
export function normalizeTimestampString(
|
|
35
30
|
value: unknown,
|
|
36
|
-
|
|
31
|
+
_withTimezone: boolean
|
|
37
32
|
): string | unknown {
|
|
38
33
|
if (value instanceof Date) {
|
|
39
34
|
const iso = value.toISOString().replace('T', ' ');
|
|
40
|
-
return
|
|
35
|
+
return iso.replace('Z', '');
|
|
41
36
|
}
|
|
42
37
|
if (typeof value === 'string') {
|
|
43
|
-
|
|
44
|
-
if (withTimezone) {
|
|
45
|
-
return normalized.includes('+') ? normalized : `${normalized}+00`;
|
|
46
|
-
}
|
|
47
|
-
return normalized.replace(/\+00$/, '');
|
|
38
|
+
return value.replace('T', ' ');
|
|
48
39
|
}
|
|
49
40
|
return value;
|
|
50
41
|
}
|
|
51
42
|
|
|
52
43
|
export function normalizeTimestamp(
|
|
53
44
|
value: unknown,
|
|
54
|
-
|
|
45
|
+
_withTimezone: boolean
|
|
55
46
|
): Date | unknown {
|
|
56
47
|
if (value instanceof Date) {
|
|
57
48
|
return value;
|
|
@@ -60,7 +51,7 @@ export function normalizeTimestamp(
|
|
|
60
51
|
const hasOffset =
|
|
61
52
|
value.endsWith('Z') || /[+-]\d{2}:?\d{2}$/.test(value.trim());
|
|
62
53
|
const spaced = value.replace(' ', 'T');
|
|
63
|
-
const normalized =
|
|
54
|
+
const normalized = hasOffset ? spaced : `${spaced}Z`;
|
|
64
55
|
return new Date(normalized);
|
|
65
56
|
}
|
|
66
57
|
return value;
|
|
@@ -86,57 +77,24 @@ export function normalizeDateValue(value: unknown): Date | unknown {
|
|
|
86
77
|
return value;
|
|
87
78
|
}
|
|
88
79
|
|
|
89
|
-
export function normalizeTime(value: unknown): string | unknown {
|
|
90
|
-
if (typeof value === 'bigint') {
|
|
91
|
-
const totalMillis = Number(value) / 1000;
|
|
92
|
-
const date = new Date(totalMillis);
|
|
93
|
-
return date.toISOString().split('T')[1]!.replace('Z', '');
|
|
94
|
-
}
|
|
95
|
-
if (value instanceof Date) {
|
|
96
|
-
return value.toISOString().split('T')[1]!.replace('Z', '');
|
|
97
|
-
}
|
|
98
|
-
return value;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
80
|
function mapDriverValue(
|
|
102
81
|
decoder: DriverValueDecoder<unknown, unknown>,
|
|
103
82
|
rawValue: unknown
|
|
104
83
|
): unknown {
|
|
105
|
-
if (is(decoder,
|
|
106
|
-
|
|
107
|
-
toDecoderInput(
|
|
108
|
-
decoder,
|
|
109
|
-
normalizeTimestampString(rawValue, decoder.withTimezone)
|
|
110
|
-
)
|
|
111
|
-
);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
if (is(decoder, PgTimestamp)) {
|
|
115
|
-
const normalized = normalizeTimestamp(rawValue, decoder.withTimezone);
|
|
84
|
+
if (is(decoder, DatabendTimestamp)) {
|
|
85
|
+
const normalized = normalizeTimestamp(rawValue, false);
|
|
116
86
|
if (normalized instanceof Date) {
|
|
117
87
|
return normalized;
|
|
118
88
|
}
|
|
119
89
|
return decoder.mapFromDriverValue(toDecoderInput(decoder, normalized));
|
|
120
90
|
}
|
|
121
91
|
|
|
122
|
-
if (is(decoder,
|
|
92
|
+
if (is(decoder, DatabendDate)) {
|
|
123
93
|
return decoder.mapFromDriverValue(
|
|
124
94
|
toDecoderInput(decoder, normalizeDateString(rawValue))
|
|
125
95
|
);
|
|
126
96
|
}
|
|
127
97
|
|
|
128
|
-
if (is(decoder, PgDate)) {
|
|
129
|
-
return decoder.mapFromDriverValue(
|
|
130
|
-
toDecoderInput(decoder, normalizeDateValue(rawValue))
|
|
131
|
-
);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
if (is(decoder, PgTime)) {
|
|
135
|
-
return decoder.mapFromDriverValue(
|
|
136
|
-
toDecoderInput(decoder, normalizeTime(rawValue))
|
|
137
|
-
);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
98
|
return decoder.mapFromDriverValue(toDecoderInput(decoder, rawValue));
|
|
141
99
|
}
|
|
142
100
|
|
|
@@ -157,7 +115,7 @@ export function mapResultRow<TResult>(
|
|
|
157
115
|
} else {
|
|
158
116
|
const col = field.sql.queryChunks.find((chunk) => is(chunk, Column));
|
|
159
117
|
|
|
160
|
-
if (is(col,
|
|
118
|
+
if (is(col, DatabendCustomColumn)) {
|
|
161
119
|
decoder = col;
|
|
162
120
|
} else {
|
|
163
121
|
decoder = (field.sql as SQLInternal).decoder;
|