@leonardovida-md/drizzle-neo-duckdb 1.0.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/LICENSE +201 -0
- package/README.md +354 -0
- package/dist/bin/duckdb-introspect.d.ts +2 -0
- package/dist/client.d.ts +10 -0
- package/dist/columns.d.ts +129 -0
- package/dist/dialect.d.ts +11 -0
- package/dist/driver.d.ts +37 -0
- package/dist/duckdb-introspect.mjs +1364 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.mjs +1564 -0
- package/dist/introspect.d.ts +53 -0
- package/dist/migrator.d.ts +4 -0
- package/dist/select-builder.d.ts +31 -0
- package/dist/session.d.ts +62 -0
- package/dist/sql/query-rewriters.d.ts +2 -0
- package/dist/sql/result-mapper.d.ts +2 -0
- package/dist/sql/selection.d.ts +2 -0
- package/dist/utils.d.ts +3 -0
- package/package.json +73 -0
- package/src/bin/duckdb-introspect.ts +117 -0
- package/src/client.ts +110 -0
- package/src/columns.ts +429 -0
- package/src/dialect.ts +136 -0
- package/src/driver.ts +131 -0
- package/src/index.ts +5 -0
- package/src/introspect.ts +853 -0
- package/src/migrator.ts +25 -0
- package/src/select-builder.ts +114 -0
- package/src/session.ts +274 -0
- package/src/sql/query-rewriters.ts +147 -0
- package/src/sql/result-mapper.ts +303 -0
- package/src/sql/selection.ts +67 -0
- package/src/utils.ts +3 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { type SQL } from 'drizzle-orm';
|
|
2
|
+
import type { SQLWrapper } from 'drizzle-orm/sql/sql';
|
|
3
|
+
type IntColType = 'SMALLINT' | 'INTEGER' | 'BIGINT' | 'HUGEINT' | 'USMALLINT' | 'UINTEGER' | 'UBIGINT' | 'UHUGEINT' | 'INT' | 'INT16' | 'INT32' | 'INT64' | 'INT128' | 'LONG' | 'VARINT';
|
|
4
|
+
type FloatColType = 'FLOAT' | 'DOUBLE';
|
|
5
|
+
type StringColType = 'STRING' | 'VARCHAR' | 'TEXT';
|
|
6
|
+
type BoolColType = 'BOOLEAN' | 'BOOL';
|
|
7
|
+
type BlobColType = 'BLOB' | 'BYTEA' | 'VARBINARY';
|
|
8
|
+
type DateColType = 'DATE' | 'TIME' | 'TIMETZ' | 'TIMESTAMP' | 'DATETIME' | 'TIMESTAMPTZ' | 'TIMESTAMP_MS' | 'TIMESTAMP_S';
|
|
9
|
+
type AnyColType = IntColType | FloatColType | StringColType | BoolColType | DateColType | BlobColType;
|
|
10
|
+
type ListColType = `${AnyColType}[]`;
|
|
11
|
+
type ArrayColType = `${AnyColType}[${number}]`;
|
|
12
|
+
type StructColType = `STRUCT (${string})`;
|
|
13
|
+
type Primitive = AnyColType | ListColType | ArrayColType | StructColType;
|
|
14
|
+
export declare const duckDbList: <TData = unknown>(name: string, elementType: AnyColType) => import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
15
|
+
name: string;
|
|
16
|
+
dataType: "custom";
|
|
17
|
+
columnType: "PgCustomColumn";
|
|
18
|
+
data: TData[];
|
|
19
|
+
driverParam: string | unknown[] | SQL<unknown>;
|
|
20
|
+
enumValues: undefined;
|
|
21
|
+
}>;
|
|
22
|
+
export declare const duckDbArray: <TData = unknown>(name: string, elementType: AnyColType, fixedLength?: number) => import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
23
|
+
name: string;
|
|
24
|
+
dataType: "custom";
|
|
25
|
+
columnType: "PgCustomColumn";
|
|
26
|
+
data: TData[];
|
|
27
|
+
driverParam: string | unknown[] | SQL<unknown>;
|
|
28
|
+
enumValues: undefined;
|
|
29
|
+
}>;
|
|
30
|
+
export declare const duckDbMap: <TData extends Record<string, any>>(name: string, valueType: AnyColType | ListColType | ArrayColType) => import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
31
|
+
name: string;
|
|
32
|
+
dataType: "custom";
|
|
33
|
+
columnType: "PgCustomColumn";
|
|
34
|
+
data: TData;
|
|
35
|
+
driverParam: TData;
|
|
36
|
+
enumValues: undefined;
|
|
37
|
+
}>;
|
|
38
|
+
export declare const duckDbStruct: <TData extends Record<string, any>>(name: string, schema: Record<string, Primitive>) => import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
39
|
+
name: string;
|
|
40
|
+
dataType: "custom";
|
|
41
|
+
columnType: "PgCustomColumn";
|
|
42
|
+
data: TData;
|
|
43
|
+
driverParam: TData;
|
|
44
|
+
enumValues: undefined;
|
|
45
|
+
}>;
|
|
46
|
+
export declare const duckDbJson: <TData = unknown>(name: string) => import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
47
|
+
name: string;
|
|
48
|
+
dataType: "custom";
|
|
49
|
+
columnType: "PgCustomColumn";
|
|
50
|
+
data: TData;
|
|
51
|
+
driverParam: string | SQL<unknown>;
|
|
52
|
+
enumValues: undefined;
|
|
53
|
+
}>;
|
|
54
|
+
export declare const duckDbBlob: {
|
|
55
|
+
(): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
56
|
+
name: "";
|
|
57
|
+
dataType: "custom";
|
|
58
|
+
columnType: "PgCustomColumn";
|
|
59
|
+
data: Buffer;
|
|
60
|
+
driverParam: unknown;
|
|
61
|
+
enumValues: undefined;
|
|
62
|
+
}>;
|
|
63
|
+
<TConfig extends Record<string, any>>(fieldConfig?: TConfig | undefined): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
64
|
+
name: "";
|
|
65
|
+
dataType: "custom";
|
|
66
|
+
columnType: "PgCustomColumn";
|
|
67
|
+
data: Buffer;
|
|
68
|
+
driverParam: unknown;
|
|
69
|
+
enumValues: undefined;
|
|
70
|
+
}>;
|
|
71
|
+
<TName extends string>(dbName: TName, fieldConfig?: unknown): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
72
|
+
name: TName;
|
|
73
|
+
dataType: "custom";
|
|
74
|
+
columnType: "PgCustomColumn";
|
|
75
|
+
data: Buffer;
|
|
76
|
+
driverParam: unknown;
|
|
77
|
+
enumValues: undefined;
|
|
78
|
+
}>;
|
|
79
|
+
};
|
|
80
|
+
export declare const duckDbInet: (name: string) => import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
81
|
+
name: string;
|
|
82
|
+
dataType: "custom";
|
|
83
|
+
columnType: "PgCustomColumn";
|
|
84
|
+
data: string;
|
|
85
|
+
driverParam: string;
|
|
86
|
+
enumValues: undefined;
|
|
87
|
+
}>;
|
|
88
|
+
export declare const duckDbInterval: (name: string) => import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
89
|
+
name: string;
|
|
90
|
+
dataType: "custom";
|
|
91
|
+
columnType: "PgCustomColumn";
|
|
92
|
+
data: string;
|
|
93
|
+
driverParam: string;
|
|
94
|
+
enumValues: undefined;
|
|
95
|
+
}>;
|
|
96
|
+
type TimestampMode = 'date' | 'string';
|
|
97
|
+
interface TimestampOptions {
|
|
98
|
+
withTimezone?: boolean;
|
|
99
|
+
mode?: TimestampMode;
|
|
100
|
+
precision?: number;
|
|
101
|
+
}
|
|
102
|
+
export declare const duckDbTimestamp: (name: string, options?: TimestampOptions) => import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
103
|
+
name: string;
|
|
104
|
+
dataType: "custom";
|
|
105
|
+
columnType: "PgCustomColumn";
|
|
106
|
+
data: string | Date;
|
|
107
|
+
driverParam: string | Date | SQL<unknown>;
|
|
108
|
+
enumValues: undefined;
|
|
109
|
+
}>;
|
|
110
|
+
export declare const duckDbDate: (name: string) => import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
111
|
+
name: string;
|
|
112
|
+
dataType: "custom";
|
|
113
|
+
columnType: "PgCustomColumn";
|
|
114
|
+
data: string | Date;
|
|
115
|
+
driverParam: string | Date;
|
|
116
|
+
enumValues: undefined;
|
|
117
|
+
}>;
|
|
118
|
+
export declare const duckDbTime: (name: string) => import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
119
|
+
name: string;
|
|
120
|
+
dataType: "custom";
|
|
121
|
+
columnType: "PgCustomColumn";
|
|
122
|
+
data: string;
|
|
123
|
+
driverParam: string | bigint;
|
|
124
|
+
enumValues: undefined;
|
|
125
|
+
}>;
|
|
126
|
+
export declare function duckDbArrayContains(column: SQLWrapper, values: unknown[] | SQLWrapper): SQL;
|
|
127
|
+
export declare function duckDbArrayContained(column: SQLWrapper, values: unknown[] | SQLWrapper): SQL;
|
|
128
|
+
export declare function duckDbArrayOverlaps(column: SQLWrapper, values: unknown[] | SQLWrapper): SQL;
|
|
129
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { entityKind } from 'drizzle-orm/entity';
|
|
2
|
+
import type { MigrationConfig, MigrationMeta } from 'drizzle-orm/migrator';
|
|
3
|
+
import { PgDialect, PgSession } from 'drizzle-orm/pg-core';
|
|
4
|
+
import { type DriverValueEncoder, type QueryTypingsValue } from 'drizzle-orm';
|
|
5
|
+
export declare class DuckDBDialect extends PgDialect {
|
|
6
|
+
static readonly [entityKind]: string;
|
|
7
|
+
private hasPgJsonColumn;
|
|
8
|
+
assertNoPgJsonColumns(): void;
|
|
9
|
+
migrate(migrations: MigrationMeta[], session: PgSession, config: MigrationConfig | string): Promise<void>;
|
|
10
|
+
prepareTyping(encoder: DriverValueEncoder<unknown, unknown>): QueryTypingsValue;
|
|
11
|
+
}
|
package/dist/driver.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { entityKind } from 'drizzle-orm/entity';
|
|
2
|
+
import type { Logger } from 'drizzle-orm/logger';
|
|
3
|
+
import { PgDatabase } from 'drizzle-orm/pg-core/db';
|
|
4
|
+
import type { SelectedFields } from 'drizzle-orm/pg-core/query-builders';
|
|
5
|
+
import { type ExtractTablesWithRelations, type RelationalSchemaConfig, type TablesRelationalConfig } from 'drizzle-orm/relations';
|
|
6
|
+
import { type DrizzleConfig } from 'drizzle-orm/utils';
|
|
7
|
+
import type { DuckDBClientLike, DuckDBQueryResultHKT, DuckDBTransaction } from './session.ts';
|
|
8
|
+
import { DuckDBSession } from './session.ts';
|
|
9
|
+
import { DuckDBDialect } from './dialect.ts';
|
|
10
|
+
import { DuckDBSelectBuilder } from './select-builder.ts';
|
|
11
|
+
export interface PgDriverOptions {
|
|
12
|
+
logger?: Logger;
|
|
13
|
+
rewriteArrays?: boolean;
|
|
14
|
+
rejectStringArrayLiterals?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare class DuckDBDriver {
|
|
17
|
+
private client;
|
|
18
|
+
private dialect;
|
|
19
|
+
private options;
|
|
20
|
+
static readonly [entityKind]: string;
|
|
21
|
+
constructor(client: DuckDBClientLike, dialect: DuckDBDialect, options?: PgDriverOptions);
|
|
22
|
+
createSession(schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined): DuckDBSession<Record<string, unknown>, TablesRelationalConfig>;
|
|
23
|
+
}
|
|
24
|
+
export interface DuckDBDrizzleConfig<TSchema extends Record<string, unknown> = Record<string, never>> extends DrizzleConfig<TSchema> {
|
|
25
|
+
rewriteArrays?: boolean;
|
|
26
|
+
rejectStringArrayLiterals?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(client: DuckDBClientLike, config?: DuckDBDrizzleConfig<TSchema>): DuckDBDatabase<TSchema, ExtractTablesWithRelations<TSchema>>;
|
|
29
|
+
export declare class DuckDBDatabase<TFullSchema extends Record<string, unknown> = Record<string, never>, TSchema extends TablesRelationalConfig = ExtractTablesWithRelations<TFullSchema>> extends PgDatabase<DuckDBQueryResultHKT, TFullSchema, TSchema> {
|
|
30
|
+
readonly dialect: DuckDBDialect;
|
|
31
|
+
readonly session: DuckDBSession<TFullSchema, TSchema>;
|
|
32
|
+
static readonly [entityKind]: string;
|
|
33
|
+
constructor(dialect: DuckDBDialect, session: DuckDBSession<TFullSchema, TSchema>, schema: RelationalSchemaConfig<TSchema> | undefined);
|
|
34
|
+
select(): DuckDBSelectBuilder<undefined>;
|
|
35
|
+
select<TSelection extends SelectedFields>(fields: TSelection): DuckDBSelectBuilder<TSelection>;
|
|
36
|
+
transaction<T>(transaction: (tx: DuckDBTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
|
|
37
|
+
}
|