drizzle-orm 0.29.5 → 0.30.0-373aad0
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/expo-sqlite/migrator.cjs +4 -6
- package/expo-sqlite/migrator.cjs.map +1 -1
- package/expo-sqlite/migrator.js +4 -6
- package/expo-sqlite/migrator.js.map +1 -1
- package/op-sqlite/driver.cjs +56 -0
- package/op-sqlite/driver.cjs.map +1 -0
- package/op-sqlite/driver.d.cts +5 -0
- package/op-sqlite/driver.d.ts +5 -0
- package/op-sqlite/driver.js +35 -0
- package/op-sqlite/driver.js.map +1 -0
- package/op-sqlite/index.cjs +25 -0
- package/op-sqlite/index.cjs.map +1 -0
- package/op-sqlite/index.d.cts +2 -0
- package/op-sqlite/index.d.ts +2 -0
- package/op-sqlite/index.js +3 -0
- package/op-sqlite/index.js.map +1 -0
- package/op-sqlite/migrator.cjs +90 -0
- package/op-sqlite/migrator.cjs.map +1 -0
- package/op-sqlite/migrator.d.cts +29 -0
- package/op-sqlite/migrator.d.ts +29 -0
- package/op-sqlite/migrator.js +65 -0
- package/op-sqlite/migrator.js.map +1 -0
- package/op-sqlite/session.cjs +130 -0
- package/op-sqlite/session.cjs.map +1 -0
- package/op-sqlite/session.d.cts +46 -0
- package/op-sqlite/session.d.ts +46 -0
- package/op-sqlite/session.js +107 -0
- package/op-sqlite/session.js.map +1 -0
- package/package.json +54 -1
- package/pg-core/columns/timestamp.cjs +1 -1
- package/pg-core/columns/timestamp.cjs.map +1 -1
- package/pg-core/columns/timestamp.d.cts +1 -1
- package/pg-core/columns/timestamp.d.ts +1 -1
- package/pg-core/columns/timestamp.js +1 -1
- package/pg-core/columns/timestamp.js.map +1 -1
- package/postgres-js/driver.cjs +5 -0
- package/postgres-js/driver.cjs.map +1 -1
- package/postgres-js/driver.js +5 -0
- package/postgres-js/driver.js.map +1 -1
- package/sqlite-core/dialect.cjs +1 -1
- package/sqlite-core/dialect.cjs.map +1 -1
- package/sqlite-core/dialect.d.cts +1 -1
- package/sqlite-core/dialect.d.ts +1 -1
- package/sqlite-core/dialect.js +1 -1
- package/sqlite-core/dialect.js.map +1 -1
- package/version.cjs +1 -1
- package/version.d.cts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/op-sqlite/session.ts"],"sourcesContent":["import type { OPSQLiteConnection, QueryResult } from '@op-engineering/op-sqlite';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport {\n type PreparedQueryConfig as PreparedQueryConfigBase,\n SQLitePreparedQuery,\n type SQLiteExecuteMethod,\n SQLiteSession,\n type SQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface OPSQLiteSessionOptions {\n logger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class OPSQLiteSession<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'async', QueryResult, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'OPSQLiteSession';\n\n private logger: Logger;\n\n constructor(\n private client: OPSQLiteConnection,\n dialect: SQLiteAsyncDialect,\n private schema: RelationalSchemaConfig<TSchema> | undefined,\n options: OPSQLiteSessionOptions = {},\n\n ) {\n super(dialect);\n this.logger = options.logger ?? new NoopLogger();\n }\n\n prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n query: Query,\n fields: SelectedFieldsOrdered | undefined,\n executeMethod: SQLiteExecuteMethod,\n customResultMapper?: (rows: unknown[][]) => unknown,\n ): OPSQLitePreparedQuery<T> {\n return new OPSQLitePreparedQuery(this.client, query, this.logger, fields, executeMethod, customResultMapper);\n }\n\n override transaction<T>(\n transaction: (tx: OPSQLiteTransaction<TFullSchema, TSchema>) => T,\n config: SQLiteTransactionConfig = {},\n ): T {\n const tx = new OPSQLiteTransaction('async', this.dialect, this, this.schema);\n this.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));\n try {\n const result = transaction(tx);\n this.run(sql`commit`);\n return result;\n } catch (err) {\n this.run(sql`rollback`);\n throw err;\n }\n }\n}\n\nexport class OPSQLiteTransaction<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'async', QueryResult, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'OPSQLiteTransaction';\n\n override transaction<T>(transaction: (tx: OPSQLiteTransaction<TFullSchema, TSchema>) => T): T {\n const savepointName = `sp${this.nestedIndex}`;\n const tx = new OPSQLiteTransaction('async', this.dialect, this.session, this.schema, this.nestedIndex + 1);\n this.session.run(sql.raw(`savepoint ${savepointName}`));\n try {\n const result = transaction(tx);\n this.session.run(sql.raw(`release savepoint ${savepointName}`));\n return result;\n } catch (err) {\n this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n throw err;\n }\n }\n}\n\nexport class OPSQLitePreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<\n { type: 'async'; run: QueryResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n static readonly [entityKind]: string = 'OPSQLitePreparedQuery';\n\n constructor(\n\t\tprivate client: OPSQLiteConnection,\n query: Query,\n private logger: Logger,\n private fields: SelectedFieldsOrdered | undefined,\n executeMethod: SQLiteExecuteMethod,\n private customResultMapper?: (rows: unknown[][]) => unknown,\n ) {\n super('sync', executeMethod, query);\n }\n\n run(placeholderValues?: Record<string, unknown>): Promise<QueryResult> {\n const params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n this.logger.logQuery(this.query.sql, params);\n\n return this.client.executeAsync(this.query.sql, params);\n }\n\n async all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n const { fields, joinsNotNullableMap, query, logger, customResultMapper, client } = this;\n if (!fields && !customResultMapper) {\n const params = fillPlaceholders(query.params, placeholderValues ?? {});\n logger.logQuery(query.sql, params);\n\n return client.execute(query.sql, params).rows?._array || [];\n }\n\n const rows = await this.values(placeholderValues) as unknown[][];\n if (customResultMapper) {\n return customResultMapper(rows) as T['all'];\n }\n return rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n }\n\n async get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n const { fields, joinsNotNullableMap, customResultMapper, query, logger, client } = this;\n const params = fillPlaceholders(query.params, placeholderValues ?? {});\n logger.logQuery(query.sql, params);\n if (!fields && !customResultMapper) {\n const rows = client.execute(query.sql, params).rows?._array || [];\n return rows[0];\n }\n\n const rows = await this.values(placeholderValues) as unknown[][];\n const row = rows[0];\n\n if (!row) {\n return undefined;\n }\n\n if (customResultMapper) {\n return customResultMapper(rows) as T['get'];\n }\n\n return mapResultRow(fields!, row, joinsNotNullableMap);\n }\n\n values(placeholderValues?: Record<string, unknown>): Promise<T['values']> {\n const params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n this.logger.logQuery(this.query.sql, params);\n return this.client.executeRawAsync(this.query.sql, params);\n }\n}\n"],"mappings":"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","names":["rows"]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { OPSQLiteConnection, QueryResult } from '@op-engineering/op-sqlite';
|
|
2
|
+
import { entityKind } from "../entity.cjs";
|
|
3
|
+
import type { Logger } from "../logger.cjs";
|
|
4
|
+
import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.cjs";
|
|
5
|
+
import { type Query } from "../sql/sql.cjs";
|
|
6
|
+
import type { SQLiteAsyncDialect } from "../sqlite-core/dialect.cjs";
|
|
7
|
+
import { SQLiteTransaction } from "../sqlite-core/index.cjs";
|
|
8
|
+
import type { SelectedFieldsOrdered } from "../sqlite-core/query-builders/select.types.cjs";
|
|
9
|
+
import { type PreparedQueryConfig as PreparedQueryConfigBase, SQLitePreparedQuery, type SQLiteExecuteMethod, SQLiteSession, type SQLiteTransactionConfig } from "../sqlite-core/session.cjs";
|
|
10
|
+
export interface OPSQLiteSessionOptions {
|
|
11
|
+
logger?: Logger;
|
|
12
|
+
}
|
|
13
|
+
type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;
|
|
14
|
+
export declare class OPSQLiteSession<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteSession<'async', QueryResult, TFullSchema, TSchema> {
|
|
15
|
+
private client;
|
|
16
|
+
private schema;
|
|
17
|
+
static readonly [entityKind]: string;
|
|
18
|
+
private logger;
|
|
19
|
+
constructor(client: OPSQLiteConnection, dialect: SQLiteAsyncDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options?: OPSQLiteSessionOptions);
|
|
20
|
+
prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, customResultMapper?: (rows: unknown[][]) => unknown): OPSQLitePreparedQuery<T>;
|
|
21
|
+
transaction<T>(transaction: (tx: OPSQLiteTransaction<TFullSchema, TSchema>) => T, config?: SQLiteTransactionConfig): T;
|
|
22
|
+
}
|
|
23
|
+
export declare class OPSQLiteTransaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteTransaction<'async', QueryResult, TFullSchema, TSchema> {
|
|
24
|
+
static readonly [entityKind]: string;
|
|
25
|
+
transaction<T>(transaction: (tx: OPSQLiteTransaction<TFullSchema, TSchema>) => T): T;
|
|
26
|
+
}
|
|
27
|
+
export declare class OPSQLitePreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<{
|
|
28
|
+
type: 'async';
|
|
29
|
+
run: QueryResult;
|
|
30
|
+
all: T['all'];
|
|
31
|
+
get: T['get'];
|
|
32
|
+
values: T['values'];
|
|
33
|
+
execute: T['execute'];
|
|
34
|
+
}> {
|
|
35
|
+
private client;
|
|
36
|
+
private logger;
|
|
37
|
+
private fields;
|
|
38
|
+
private customResultMapper?;
|
|
39
|
+
static readonly [entityKind]: string;
|
|
40
|
+
constructor(client: OPSQLiteConnection, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, customResultMapper?: ((rows: unknown[][]) => unknown) | undefined);
|
|
41
|
+
run(placeholderValues?: Record<string, unknown>): Promise<QueryResult>;
|
|
42
|
+
all(placeholderValues?: Record<string, unknown>): Promise<T['all']>;
|
|
43
|
+
get(placeholderValues?: Record<string, unknown>): Promise<T['get']>;
|
|
44
|
+
values(placeholderValues?: Record<string, unknown>): Promise<T['values']>;
|
|
45
|
+
}
|
|
46
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { OPSQLiteConnection, QueryResult } from '@op-engineering/op-sqlite';
|
|
2
|
+
import { entityKind } from "../entity.js";
|
|
3
|
+
import type { Logger } from "../logger.js";
|
|
4
|
+
import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.js";
|
|
5
|
+
import { type Query } from "../sql/sql.js";
|
|
6
|
+
import type { SQLiteAsyncDialect } from "../sqlite-core/dialect.js";
|
|
7
|
+
import { SQLiteTransaction } from "../sqlite-core/index.js";
|
|
8
|
+
import type { SelectedFieldsOrdered } from "../sqlite-core/query-builders/select.types.js";
|
|
9
|
+
import { type PreparedQueryConfig as PreparedQueryConfigBase, SQLitePreparedQuery, type SQLiteExecuteMethod, SQLiteSession, type SQLiteTransactionConfig } from "../sqlite-core/session.js";
|
|
10
|
+
export interface OPSQLiteSessionOptions {
|
|
11
|
+
logger?: Logger;
|
|
12
|
+
}
|
|
13
|
+
type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;
|
|
14
|
+
export declare class OPSQLiteSession<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteSession<'async', QueryResult, TFullSchema, TSchema> {
|
|
15
|
+
private client;
|
|
16
|
+
private schema;
|
|
17
|
+
static readonly [entityKind]: string;
|
|
18
|
+
private logger;
|
|
19
|
+
constructor(client: OPSQLiteConnection, dialect: SQLiteAsyncDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options?: OPSQLiteSessionOptions);
|
|
20
|
+
prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, customResultMapper?: (rows: unknown[][]) => unknown): OPSQLitePreparedQuery<T>;
|
|
21
|
+
transaction<T>(transaction: (tx: OPSQLiteTransaction<TFullSchema, TSchema>) => T, config?: SQLiteTransactionConfig): T;
|
|
22
|
+
}
|
|
23
|
+
export declare class OPSQLiteTransaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteTransaction<'async', QueryResult, TFullSchema, TSchema> {
|
|
24
|
+
static readonly [entityKind]: string;
|
|
25
|
+
transaction<T>(transaction: (tx: OPSQLiteTransaction<TFullSchema, TSchema>) => T): T;
|
|
26
|
+
}
|
|
27
|
+
export declare class OPSQLitePreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<{
|
|
28
|
+
type: 'async';
|
|
29
|
+
run: QueryResult;
|
|
30
|
+
all: T['all'];
|
|
31
|
+
get: T['get'];
|
|
32
|
+
values: T['values'];
|
|
33
|
+
execute: T['execute'];
|
|
34
|
+
}> {
|
|
35
|
+
private client;
|
|
36
|
+
private logger;
|
|
37
|
+
private fields;
|
|
38
|
+
private customResultMapper?;
|
|
39
|
+
static readonly [entityKind]: string;
|
|
40
|
+
constructor(client: OPSQLiteConnection, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, customResultMapper?: ((rows: unknown[][]) => unknown) | undefined);
|
|
41
|
+
run(placeholderValues?: Record<string, unknown>): Promise<QueryResult>;
|
|
42
|
+
all(placeholderValues?: Record<string, unknown>): Promise<T['all']>;
|
|
43
|
+
get(placeholderValues?: Record<string, unknown>): Promise<T['get']>;
|
|
44
|
+
values(placeholderValues?: Record<string, unknown>): Promise<T['values']>;
|
|
45
|
+
}
|
|
46
|
+
export {};
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { entityKind } from "../entity.js";
|
|
2
|
+
import { NoopLogger } from "../logger.js";
|
|
3
|
+
import { fillPlaceholders, sql } from "../sql/sql.js";
|
|
4
|
+
import { SQLiteTransaction } from "../sqlite-core/index.js";
|
|
5
|
+
import {
|
|
6
|
+
SQLitePreparedQuery,
|
|
7
|
+
SQLiteSession
|
|
8
|
+
} from "../sqlite-core/session.js";
|
|
9
|
+
import { mapResultRow } from "../utils.js";
|
|
10
|
+
class OPSQLiteSession extends SQLiteSession {
|
|
11
|
+
constructor(client, dialect, schema, options = {}) {
|
|
12
|
+
super(dialect);
|
|
13
|
+
this.client = client;
|
|
14
|
+
this.schema = schema;
|
|
15
|
+
this.logger = options.logger ?? new NoopLogger();
|
|
16
|
+
}
|
|
17
|
+
static [entityKind] = "OPSQLiteSession";
|
|
18
|
+
logger;
|
|
19
|
+
prepareQuery(query, fields, executeMethod, customResultMapper) {
|
|
20
|
+
return new OPSQLitePreparedQuery(this.client, query, this.logger, fields, executeMethod, customResultMapper);
|
|
21
|
+
}
|
|
22
|
+
transaction(transaction, config = {}) {
|
|
23
|
+
const tx = new OPSQLiteTransaction("async", this.dialect, this, this.schema);
|
|
24
|
+
this.run(sql.raw(`begin${config?.behavior ? " " + config.behavior : ""}`));
|
|
25
|
+
try {
|
|
26
|
+
const result = transaction(tx);
|
|
27
|
+
this.run(sql`commit`);
|
|
28
|
+
return result;
|
|
29
|
+
} catch (err) {
|
|
30
|
+
this.run(sql`rollback`);
|
|
31
|
+
throw err;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
class OPSQLiteTransaction extends SQLiteTransaction {
|
|
36
|
+
static [entityKind] = "OPSQLiteTransaction";
|
|
37
|
+
transaction(transaction) {
|
|
38
|
+
const savepointName = `sp${this.nestedIndex}`;
|
|
39
|
+
const tx = new OPSQLiteTransaction("async", this.dialect, this.session, this.schema, this.nestedIndex + 1);
|
|
40
|
+
this.session.run(sql.raw(`savepoint ${savepointName}`));
|
|
41
|
+
try {
|
|
42
|
+
const result = transaction(tx);
|
|
43
|
+
this.session.run(sql.raw(`release savepoint ${savepointName}`));
|
|
44
|
+
return result;
|
|
45
|
+
} catch (err) {
|
|
46
|
+
this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));
|
|
47
|
+
throw err;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
class OPSQLitePreparedQuery extends SQLitePreparedQuery {
|
|
52
|
+
constructor(client, query, logger, fields, executeMethod, customResultMapper) {
|
|
53
|
+
super("sync", executeMethod, query);
|
|
54
|
+
this.client = client;
|
|
55
|
+
this.logger = logger;
|
|
56
|
+
this.fields = fields;
|
|
57
|
+
this.customResultMapper = customResultMapper;
|
|
58
|
+
}
|
|
59
|
+
static [entityKind] = "OPSQLitePreparedQuery";
|
|
60
|
+
run(placeholderValues) {
|
|
61
|
+
const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
|
|
62
|
+
this.logger.logQuery(this.query.sql, params);
|
|
63
|
+
return this.client.executeAsync(this.query.sql, params);
|
|
64
|
+
}
|
|
65
|
+
async all(placeholderValues) {
|
|
66
|
+
const { fields, joinsNotNullableMap, query, logger, customResultMapper, client } = this;
|
|
67
|
+
if (!fields && !customResultMapper) {
|
|
68
|
+
const params = fillPlaceholders(query.params, placeholderValues ?? {});
|
|
69
|
+
logger.logQuery(query.sql, params);
|
|
70
|
+
return client.execute(query.sql, params).rows?._array || [];
|
|
71
|
+
}
|
|
72
|
+
const rows = await this.values(placeholderValues);
|
|
73
|
+
if (customResultMapper) {
|
|
74
|
+
return customResultMapper(rows);
|
|
75
|
+
}
|
|
76
|
+
return rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
|
|
77
|
+
}
|
|
78
|
+
async get(placeholderValues) {
|
|
79
|
+
const { fields, joinsNotNullableMap, customResultMapper, query, logger, client } = this;
|
|
80
|
+
const params = fillPlaceholders(query.params, placeholderValues ?? {});
|
|
81
|
+
logger.logQuery(query.sql, params);
|
|
82
|
+
if (!fields && !customResultMapper) {
|
|
83
|
+
const rows2 = client.execute(query.sql, params).rows?._array || [];
|
|
84
|
+
return rows2[0];
|
|
85
|
+
}
|
|
86
|
+
const rows = await this.values(placeholderValues);
|
|
87
|
+
const row = rows[0];
|
|
88
|
+
if (!row) {
|
|
89
|
+
return void 0;
|
|
90
|
+
}
|
|
91
|
+
if (customResultMapper) {
|
|
92
|
+
return customResultMapper(rows);
|
|
93
|
+
}
|
|
94
|
+
return mapResultRow(fields, row, joinsNotNullableMap);
|
|
95
|
+
}
|
|
96
|
+
values(placeholderValues) {
|
|
97
|
+
const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
|
|
98
|
+
this.logger.logQuery(this.query.sql, params);
|
|
99
|
+
return this.client.executeRawAsync(this.query.sql, params);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
export {
|
|
103
|
+
OPSQLitePreparedQuery,
|
|
104
|
+
OPSQLiteSession,
|
|
105
|
+
OPSQLiteTransaction
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/op-sqlite/session.ts"],"sourcesContent":["import type { OPSQLiteConnection, QueryResult } from '@op-engineering/op-sqlite';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport {\n type PreparedQueryConfig as PreparedQueryConfigBase,\n SQLitePreparedQuery,\n type SQLiteExecuteMethod,\n SQLiteSession,\n type SQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface OPSQLiteSessionOptions {\n logger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class OPSQLiteSession<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'async', QueryResult, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'OPSQLiteSession';\n\n private logger: Logger;\n\n constructor(\n private client: OPSQLiteConnection,\n dialect: SQLiteAsyncDialect,\n private schema: RelationalSchemaConfig<TSchema> | undefined,\n options: OPSQLiteSessionOptions = {},\n\n ) {\n super(dialect);\n this.logger = options.logger ?? new NoopLogger();\n }\n\n prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n query: Query,\n fields: SelectedFieldsOrdered | undefined,\n executeMethod: SQLiteExecuteMethod,\n customResultMapper?: (rows: unknown[][]) => unknown,\n ): OPSQLitePreparedQuery<T> {\n return new OPSQLitePreparedQuery(this.client, query, this.logger, fields, executeMethod, customResultMapper);\n }\n\n override transaction<T>(\n transaction: (tx: OPSQLiteTransaction<TFullSchema, TSchema>) => T,\n config: SQLiteTransactionConfig = {},\n ): T {\n const tx = new OPSQLiteTransaction('async', this.dialect, this, this.schema);\n this.run(sql.raw(`begin${config?.behavior ? ' ' + config.behavior : ''}`));\n try {\n const result = transaction(tx);\n this.run(sql`commit`);\n return result;\n } catch (err) {\n this.run(sql`rollback`);\n throw err;\n }\n }\n}\n\nexport class OPSQLiteTransaction<\n TFullSchema extends Record<string, unknown>,\n TSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'async', QueryResult, TFullSchema, TSchema> {\n static readonly [entityKind]: string = 'OPSQLiteTransaction';\n\n override transaction<T>(transaction: (tx: OPSQLiteTransaction<TFullSchema, TSchema>) => T): T {\n const savepointName = `sp${this.nestedIndex}`;\n const tx = new OPSQLiteTransaction('async', this.dialect, this.session, this.schema, this.nestedIndex + 1);\n this.session.run(sql.raw(`savepoint ${savepointName}`));\n try {\n const result = transaction(tx);\n this.session.run(sql.raw(`release savepoint ${savepointName}`));\n return result;\n } catch (err) {\n this.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n throw err;\n }\n }\n}\n\nexport class OPSQLitePreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends SQLitePreparedQuery<\n { type: 'async'; run: QueryResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n static readonly [entityKind]: string = 'OPSQLitePreparedQuery';\n\n constructor(\n\t\tprivate client: OPSQLiteConnection,\n query: Query,\n private logger: Logger,\n private fields: SelectedFieldsOrdered | undefined,\n executeMethod: SQLiteExecuteMethod,\n private customResultMapper?: (rows: unknown[][]) => unknown,\n ) {\n super('sync', executeMethod, query);\n }\n\n run(placeholderValues?: Record<string, unknown>): Promise<QueryResult> {\n const params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n this.logger.logQuery(this.query.sql, params);\n\n return this.client.executeAsync(this.query.sql, params);\n }\n\n async all(placeholderValues?: Record<string, unknown>): Promise<T['all']> {\n const { fields, joinsNotNullableMap, query, logger, customResultMapper, client } = this;\n if (!fields && !customResultMapper) {\n const params = fillPlaceholders(query.params, placeholderValues ?? {});\n logger.logQuery(query.sql, params);\n\n return client.execute(query.sql, params).rows?._array || [];\n }\n\n const rows = await this.values(placeholderValues) as unknown[][];\n if (customResultMapper) {\n return customResultMapper(rows) as T['all'];\n }\n return rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n }\n\n async get(placeholderValues?: Record<string, unknown>): Promise<T['get']> {\n const { fields, joinsNotNullableMap, customResultMapper, query, logger, client } = this;\n const params = fillPlaceholders(query.params, placeholderValues ?? {});\n logger.logQuery(query.sql, params);\n if (!fields && !customResultMapper) {\n const rows = client.execute(query.sql, params).rows?._array || [];\n return rows[0];\n }\n\n const rows = await this.values(placeholderValues) as unknown[][];\n const row = rows[0];\n\n if (!row) {\n return undefined;\n }\n\n if (customResultMapper) {\n return customResultMapper(rows) as T['get'];\n }\n\n return mapResultRow(fields!, row, joinsNotNullableMap);\n }\n\n values(placeholderValues?: Record<string, unknown>): Promise<T['values']> {\n const params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n this.logger.logQuery(this.query.sql, params);\n return this.client.executeRawAsync(this.query.sql, params);\n }\n}\n"],"mappings":"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","names":["rows"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "drizzle-orm",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.30.0-373aad0",
|
|
4
4
|
"description": "Drizzle ORM package for SQL databases",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"@cloudflare/workers-types": ">=3",
|
|
48
48
|
"@libsql/client": "*",
|
|
49
49
|
"@neondatabase/serverless": ">=0.1",
|
|
50
|
+
"@op-engineering/op-sqlite": ">=2",
|
|
50
51
|
"@opentelemetry/api": "^1.4.1",
|
|
51
52
|
"@planetscale/database": ">=1",
|
|
52
53
|
"@types/better-sqlite3": "*",
|
|
@@ -127,6 +128,9 @@
|
|
|
127
128
|
"expo-sqlite": {
|
|
128
129
|
"optional": true
|
|
129
130
|
},
|
|
131
|
+
"@op-engineering/op-sqlite": {
|
|
132
|
+
"optional": true
|
|
133
|
+
},
|
|
130
134
|
"react": {
|
|
131
135
|
"optional": true
|
|
132
136
|
},
|
|
@@ -139,6 +143,7 @@
|
|
|
139
143
|
"@cloudflare/workers-types": "^4.20230904.0",
|
|
140
144
|
"@libsql/client": "^0.1.6",
|
|
141
145
|
"@neondatabase/serverless": "^0.4.24",
|
|
146
|
+
"@op-engineering/op-sqlite": "^2.0.16",
|
|
142
147
|
"@opentelemetry/api": "^1.4.1",
|
|
143
148
|
"@originjs/vite-plugin-commonjs": "^1.0.3",
|
|
144
149
|
"@planetscale/database": "^1.16.0",
|
|
@@ -1176,6 +1181,54 @@
|
|
|
1176
1181
|
"types": "./node-postgres/session.d.ts",
|
|
1177
1182
|
"default": "./node-postgres/session.js"
|
|
1178
1183
|
},
|
|
1184
|
+
"./op-sqlite/driver": {
|
|
1185
|
+
"import": {
|
|
1186
|
+
"types": "./op-sqlite/driver.d.ts",
|
|
1187
|
+
"default": "./op-sqlite/driver.js"
|
|
1188
|
+
},
|
|
1189
|
+
"require": {
|
|
1190
|
+
"types": "./op-sqlite/driver.d.cts",
|
|
1191
|
+
"default": "./op-sqlite/driver.cjs"
|
|
1192
|
+
},
|
|
1193
|
+
"types": "./op-sqlite/driver.d.ts",
|
|
1194
|
+
"default": "./op-sqlite/driver.js"
|
|
1195
|
+
},
|
|
1196
|
+
"./op-sqlite": {
|
|
1197
|
+
"import": {
|
|
1198
|
+
"types": "./op-sqlite/index.d.ts",
|
|
1199
|
+
"default": "./op-sqlite/index.js"
|
|
1200
|
+
},
|
|
1201
|
+
"require": {
|
|
1202
|
+
"types": "./op-sqlite/index.d.cts",
|
|
1203
|
+
"default": "./op-sqlite/index.cjs"
|
|
1204
|
+
},
|
|
1205
|
+
"types": "./op-sqlite/index.d.ts",
|
|
1206
|
+
"default": "./op-sqlite/index.js"
|
|
1207
|
+
},
|
|
1208
|
+
"./op-sqlite/migrator": {
|
|
1209
|
+
"import": {
|
|
1210
|
+
"types": "./op-sqlite/migrator.d.ts",
|
|
1211
|
+
"default": "./op-sqlite/migrator.js"
|
|
1212
|
+
},
|
|
1213
|
+
"require": {
|
|
1214
|
+
"types": "./op-sqlite/migrator.d.cts",
|
|
1215
|
+
"default": "./op-sqlite/migrator.cjs"
|
|
1216
|
+
},
|
|
1217
|
+
"types": "./op-sqlite/migrator.d.ts",
|
|
1218
|
+
"default": "./op-sqlite/migrator.js"
|
|
1219
|
+
},
|
|
1220
|
+
"./op-sqlite/session": {
|
|
1221
|
+
"import": {
|
|
1222
|
+
"types": "./op-sqlite/session.d.ts",
|
|
1223
|
+
"default": "./op-sqlite/session.js"
|
|
1224
|
+
},
|
|
1225
|
+
"require": {
|
|
1226
|
+
"types": "./op-sqlite/session.d.cts",
|
|
1227
|
+
"default": "./op-sqlite/session.cjs"
|
|
1228
|
+
},
|
|
1229
|
+
"types": "./op-sqlite/session.d.ts",
|
|
1230
|
+
"default": "./op-sqlite/session.js"
|
|
1231
|
+
},
|
|
1179
1232
|
"./pg-core/alias": {
|
|
1180
1233
|
"import": {
|
|
1181
1234
|
"types": "./pg-core/alias.d.ts",
|
|
@@ -57,7 +57,7 @@ class PgTimestamp extends import_common.PgColumn {
|
|
|
57
57
|
return new Date(this.withTimezone ? value : value + "+0000");
|
|
58
58
|
};
|
|
59
59
|
mapToDriverValue = (value) => {
|
|
60
|
-
return
|
|
60
|
+
return value.toISOString();
|
|
61
61
|
};
|
|
62
62
|
}
|
|
63
63
|
class PgTimestampStringBuilder extends import_date_common.PgDateColumnBaseBuilder {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/pg-core/columns/timestamp.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport type { Equal } from '~/utils.ts';\nimport { PgColumn } from './common.ts';\nimport { PgDateColumnBaseBuilder } from './date.common.ts';\n\nexport type PgTimestampBuilderInitial<TName extends string> = PgTimestampBuilder<{\n\tname: TName;\n\tdataType: 'date';\n\tcolumnType: 'PgTimestamp';\n\tdata: Date;\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgTimestampBuilder<T extends ColumnBuilderBaseConfig<'date', 'PgTimestamp'>>\n\textends PgDateColumnBaseBuilder<\n\t\tT,\n\t\t{ withTimezone: boolean; precision: number | undefined }\n\t>\n{\n\tstatic readonly [entityKind]: string = 'PgTimestampBuilder';\n\n\tconstructor(\n\t\tname: string,\n\t\twithTimezone: boolean,\n\t\tprecision: number | undefined,\n\t) {\n\t\tsuper(name, 'date', 'PgTimestamp');\n\t\tthis.config.withTimezone = withTimezone;\n\t\tthis.config.precision = precision;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgTimestamp<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgTimestamp<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any, any>);\n\t}\n}\n\nexport class PgTimestamp<T extends ColumnBaseConfig<'date', 'PgTimestamp'>> extends PgColumn<T> {\n\tstatic readonly [entityKind]: string = 'PgTimestamp';\n\n\treadonly withTimezone: boolean;\n\treadonly precision: number | undefined;\n\n\tconstructor(table: AnyPgTable<{ name: T['tableName'] }>, config: PgTimestampBuilder<T>['config']) {\n\t\tsuper(table, config);\n\t\tthis.withTimezone = config.withTimezone;\n\t\tthis.precision = config.precision;\n\t}\n\n\tgetSQLType(): string {\n\t\tconst precision = this.precision === undefined ? '' : ` (${this.precision})`;\n\t\treturn `timestamp${precision}${this.withTimezone ? ' with time zone' : ''}`;\n\t}\n\n\toverride mapFromDriverValue = (value: string): Date => {\n\t\treturn new Date(this.withTimezone ? value : value + '+0000');\n\t};\n\n\toverride mapToDriverValue = (value: Date): string => {\n\t\treturn
|
|
1
|
+
{"version":3,"sources":["../../../src/pg-core/columns/timestamp.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport type { Equal } from '~/utils.ts';\nimport { PgColumn } from './common.ts';\nimport { PgDateColumnBaseBuilder } from './date.common.ts';\n\nexport type PgTimestampBuilderInitial<TName extends string> = PgTimestampBuilder<{\n\tname: TName;\n\tdataType: 'date';\n\tcolumnType: 'PgTimestamp';\n\tdata: Date;\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgTimestampBuilder<T extends ColumnBuilderBaseConfig<'date', 'PgTimestamp'>>\n\textends PgDateColumnBaseBuilder<\n\t\tT,\n\t\t{ withTimezone: boolean; precision: number | undefined }\n\t>\n{\n\tstatic readonly [entityKind]: string = 'PgTimestampBuilder';\n\n\tconstructor(\n\t\tname: string,\n\t\twithTimezone: boolean,\n\t\tprecision: number | undefined,\n\t) {\n\t\tsuper(name, 'date', 'PgTimestamp');\n\t\tthis.config.withTimezone = withTimezone;\n\t\tthis.config.precision = precision;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgTimestamp<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgTimestamp<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any, any>);\n\t}\n}\n\nexport class PgTimestamp<T extends ColumnBaseConfig<'date', 'PgTimestamp'>> extends PgColumn<T> {\n\tstatic readonly [entityKind]: string = 'PgTimestamp';\n\n\treadonly withTimezone: boolean;\n\treadonly precision: number | undefined;\n\n\tconstructor(table: AnyPgTable<{ name: T['tableName'] }>, config: PgTimestampBuilder<T>['config']) {\n\t\tsuper(table, config);\n\t\tthis.withTimezone = config.withTimezone;\n\t\tthis.precision = config.precision;\n\t}\n\n\tgetSQLType(): string {\n\t\tconst precision = this.precision === undefined ? '' : ` (${this.precision})`;\n\t\treturn `timestamp${precision}${this.withTimezone ? ' with time zone' : ''}`;\n\t}\n\n\toverride mapFromDriverValue = (value: string): Date | null => {\n\t\treturn new Date(this.withTimezone ? value : value + '+0000');\n\t};\n\n\toverride mapToDriverValue = (value: Date): string => {\n\t\treturn value.toISOString();\n\t};\n}\n\nexport type PgTimestampStringBuilderInitial<TName extends string> = PgTimestampStringBuilder<{\n\tname: TName;\n\tdataType: 'string';\n\tcolumnType: 'PgTimestampString';\n\tdata: string;\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgTimestampStringBuilder<T extends ColumnBuilderBaseConfig<'string', 'PgTimestampString'>>\n\textends PgDateColumnBaseBuilder<\n\t\tT,\n\t\t{ withTimezone: boolean; precision: number | undefined }\n\t>\n{\n\tstatic readonly [entityKind]: string = 'PgTimestampStringBuilder';\n\n\tconstructor(\n\t\tname: string,\n\t\twithTimezone: boolean,\n\t\tprecision: number | undefined,\n\t) {\n\t\tsuper(name, 'string', 'PgTimestampString');\n\t\tthis.config.withTimezone = withTimezone;\n\t\tthis.config.precision = precision;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgTimestampString<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgTimestampString<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t);\n\t}\n}\n\nexport class PgTimestampString<T extends ColumnBaseConfig<'string', 'PgTimestampString'>> extends PgColumn<T> {\n\tstatic readonly [entityKind]: string = 'PgTimestampString';\n\n\treadonly withTimezone: boolean;\n\treadonly precision: number | undefined;\n\n\tconstructor(table: AnyPgTable<{ name: T['tableName'] }>, config: PgTimestampStringBuilder<T>['config']) {\n\t\tsuper(table, config);\n\t\tthis.withTimezone = config.withTimezone;\n\t\tthis.precision = config.precision;\n\t}\n\n\tgetSQLType(): string {\n\t\tconst precision = this.precision === undefined ? '' : `(${this.precision})`;\n\t\treturn `timestamp${precision}${this.withTimezone ? ' with time zone' : ''}`;\n\t}\n}\n\nexport type Precision = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface PgTimestampConfig<TMode extends 'date' | 'string' = 'date' | 'string'> {\n\tmode?: TMode;\n\tprecision?: Precision;\n\twithTimezone?: boolean;\n}\n\nexport function timestamp<TName extends string, TMode extends PgTimestampConfig['mode'] & {}>(\n\tname: TName,\n\tconfig?: PgTimestampConfig<TMode>,\n): Equal<TMode, 'string'> extends true ? PgTimestampStringBuilderInitial<TName> : PgTimestampBuilderInitial<TName>;\nexport function timestamp(\n\tname: string,\n\tconfig: PgTimestampConfig = {},\n) {\n\tif (config.mode === 'string') {\n\t\treturn new PgTimestampStringBuilder(name, config.withTimezone ?? false, config.precision);\n\t}\n\treturn new PgTimestampBuilder(name, config.withTimezone ?? false, config.precision);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAA2B;AAG3B,oBAAyB;AACzB,yBAAwC;AAWjC,MAAM,2BACJ,2CAIT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YACC,MACA,cACA,WACC;AACD,UAAM,MAAM,QAAQ,aAAa;AACjC,SAAK,OAAO,eAAe;AAC3B,SAAK,OAAO,YAAY;AAAA,EACzB;AAAA;AAAA,EAGS,MACR,OAC+C;AAC/C,WAAO,IAAI,YAA6C,OAAO,KAAK,MAA8C;AAAA,EACnH;AACD;AAEO,MAAM,oBAAuE,uBAAY;AAAA,EAC/F,QAAiB,wBAAU,IAAY;AAAA,EAE9B;AAAA,EACA;AAAA,EAET,YAAY,OAA6C,QAAyC;AACjG,UAAM,OAAO,MAAM;AACnB,SAAK,eAAe,OAAO;AAC3B,SAAK,YAAY,OAAO;AAAA,EACzB;AAAA,EAEA,aAAqB;AACpB,UAAM,YAAY,KAAK,cAAc,SAAY,KAAK,KAAK,KAAK,SAAS;AACzE,WAAO,YAAY,SAAS,GAAG,KAAK,eAAe,oBAAoB,EAAE;AAAA,EAC1E;AAAA,EAES,qBAAqB,CAAC,UAA+B;AAC7D,WAAO,IAAI,KAAK,KAAK,eAAe,QAAQ,QAAQ,OAAO;AAAA,EAC5D;AAAA,EAES,mBAAmB,CAAC,UAAwB;AACpD,WAAO,MAAM,YAAY;AAAA,EAC1B;AACD;AAWO,MAAM,iCACJ,2CAIT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YACC,MACA,cACA,WACC;AACD,UAAM,MAAM,UAAU,mBAAmB;AACzC,SAAK,OAAO,eAAe;AAC3B,SAAK,OAAO,YAAY;AAAA,EACzB;AAAA;AAAA,EAGS,MACR,OACqD;AACrD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,0BAAqF,uBAAY;AAAA,EAC7G,QAAiB,wBAAU,IAAY;AAAA,EAE9B;AAAA,EACA;AAAA,EAET,YAAY,OAA6C,QAA+C;AACvG,UAAM,OAAO,MAAM;AACnB,SAAK,eAAe,OAAO;AAC3B,SAAK,YAAY,OAAO;AAAA,EACzB;AAAA,EAEA,aAAqB;AACpB,UAAM,YAAY,KAAK,cAAc,SAAY,KAAK,IAAI,KAAK,SAAS;AACxE,WAAO,YAAY,SAAS,GAAG,KAAK,eAAe,oBAAoB,EAAE;AAAA,EAC1E;AACD;AAcO,SAAS,UACf,MACA,SAA4B,CAAC,GAC5B;AACD,MAAI,OAAO,SAAS,UAAU;AAC7B,WAAO,IAAI,yBAAyB,MAAM,OAAO,gBAAgB,OAAO,OAAO,SAAS;AAAA,EACzF;AACA,SAAO,IAAI,mBAAmB,MAAM,OAAO,gBAAgB,OAAO,OAAO,SAAS;AACnF;","names":[]}
|
|
@@ -28,7 +28,7 @@ export declare class PgTimestamp<T extends ColumnBaseConfig<'date', 'PgTimestamp
|
|
|
28
28
|
name: T['tableName'];
|
|
29
29
|
}>, config: PgTimestampBuilder<T>['config']);
|
|
30
30
|
getSQLType(): string;
|
|
31
|
-
mapFromDriverValue: (value: string) => Date;
|
|
31
|
+
mapFromDriverValue: (value: string) => Date | null;
|
|
32
32
|
mapToDriverValue: (value: Date) => string;
|
|
33
33
|
}
|
|
34
34
|
export type PgTimestampStringBuilderInitial<TName extends string> = PgTimestampStringBuilder<{
|
|
@@ -28,7 +28,7 @@ export declare class PgTimestamp<T extends ColumnBaseConfig<'date', 'PgTimestamp
|
|
|
28
28
|
name: T['tableName'];
|
|
29
29
|
}>, config: PgTimestampBuilder<T>['config']);
|
|
30
30
|
getSQLType(): string;
|
|
31
|
-
mapFromDriverValue: (value: string) => Date;
|
|
31
|
+
mapFromDriverValue: (value: string) => Date | null;
|
|
32
32
|
mapToDriverValue: (value: Date) => string;
|
|
33
33
|
}
|
|
34
34
|
export type PgTimestampStringBuilderInitial<TName extends string> = PgTimestampStringBuilder<{
|
|
@@ -30,7 +30,7 @@ class PgTimestamp extends PgColumn {
|
|
|
30
30
|
return new Date(this.withTimezone ? value : value + "+0000");
|
|
31
31
|
};
|
|
32
32
|
mapToDriverValue = (value) => {
|
|
33
|
-
return
|
|
33
|
+
return value.toISOString();
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
36
|
class PgTimestampStringBuilder extends PgDateColumnBaseBuilder {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/pg-core/columns/timestamp.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport type { Equal } from '~/utils.ts';\nimport { PgColumn } from './common.ts';\nimport { PgDateColumnBaseBuilder } from './date.common.ts';\n\nexport type PgTimestampBuilderInitial<TName extends string> = PgTimestampBuilder<{\n\tname: TName;\n\tdataType: 'date';\n\tcolumnType: 'PgTimestamp';\n\tdata: Date;\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgTimestampBuilder<T extends ColumnBuilderBaseConfig<'date', 'PgTimestamp'>>\n\textends PgDateColumnBaseBuilder<\n\t\tT,\n\t\t{ withTimezone: boolean; precision: number | undefined }\n\t>\n{\n\tstatic readonly [entityKind]: string = 'PgTimestampBuilder';\n\n\tconstructor(\n\t\tname: string,\n\t\twithTimezone: boolean,\n\t\tprecision: number | undefined,\n\t) {\n\t\tsuper(name, 'date', 'PgTimestamp');\n\t\tthis.config.withTimezone = withTimezone;\n\t\tthis.config.precision = precision;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgTimestamp<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgTimestamp<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any, any>);\n\t}\n}\n\nexport class PgTimestamp<T extends ColumnBaseConfig<'date', 'PgTimestamp'>> extends PgColumn<T> {\n\tstatic readonly [entityKind]: string = 'PgTimestamp';\n\n\treadonly withTimezone: boolean;\n\treadonly precision: number | undefined;\n\n\tconstructor(table: AnyPgTable<{ name: T['tableName'] }>, config: PgTimestampBuilder<T>['config']) {\n\t\tsuper(table, config);\n\t\tthis.withTimezone = config.withTimezone;\n\t\tthis.precision = config.precision;\n\t}\n\n\tgetSQLType(): string {\n\t\tconst precision = this.precision === undefined ? '' : ` (${this.precision})`;\n\t\treturn `timestamp${precision}${this.withTimezone ? ' with time zone' : ''}`;\n\t}\n\n\toverride mapFromDriverValue = (value: string): Date => {\n\t\treturn new Date(this.withTimezone ? value : value + '+0000');\n\t};\n\n\toverride mapToDriverValue = (value: Date): string => {\n\t\treturn
|
|
1
|
+
{"version":3,"sources":["../../../src/pg-core/columns/timestamp.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport type { Equal } from '~/utils.ts';\nimport { PgColumn } from './common.ts';\nimport { PgDateColumnBaseBuilder } from './date.common.ts';\n\nexport type PgTimestampBuilderInitial<TName extends string> = PgTimestampBuilder<{\n\tname: TName;\n\tdataType: 'date';\n\tcolumnType: 'PgTimestamp';\n\tdata: Date;\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgTimestampBuilder<T extends ColumnBuilderBaseConfig<'date', 'PgTimestamp'>>\n\textends PgDateColumnBaseBuilder<\n\t\tT,\n\t\t{ withTimezone: boolean; precision: number | undefined }\n\t>\n{\n\tstatic readonly [entityKind]: string = 'PgTimestampBuilder';\n\n\tconstructor(\n\t\tname: string,\n\t\twithTimezone: boolean,\n\t\tprecision: number | undefined,\n\t) {\n\t\tsuper(name, 'date', 'PgTimestamp');\n\t\tthis.config.withTimezone = withTimezone;\n\t\tthis.config.precision = precision;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgTimestamp<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgTimestamp<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any, any>);\n\t}\n}\n\nexport class PgTimestamp<T extends ColumnBaseConfig<'date', 'PgTimestamp'>> extends PgColumn<T> {\n\tstatic readonly [entityKind]: string = 'PgTimestamp';\n\n\treadonly withTimezone: boolean;\n\treadonly precision: number | undefined;\n\n\tconstructor(table: AnyPgTable<{ name: T['tableName'] }>, config: PgTimestampBuilder<T>['config']) {\n\t\tsuper(table, config);\n\t\tthis.withTimezone = config.withTimezone;\n\t\tthis.precision = config.precision;\n\t}\n\n\tgetSQLType(): string {\n\t\tconst precision = this.precision === undefined ? '' : ` (${this.precision})`;\n\t\treturn `timestamp${precision}${this.withTimezone ? ' with time zone' : ''}`;\n\t}\n\n\toverride mapFromDriverValue = (value: string): Date | null => {\n\t\treturn new Date(this.withTimezone ? value : value + '+0000');\n\t};\n\n\toverride mapToDriverValue = (value: Date): string => {\n\t\treturn value.toISOString();\n\t};\n}\n\nexport type PgTimestampStringBuilderInitial<TName extends string> = PgTimestampStringBuilder<{\n\tname: TName;\n\tdataType: 'string';\n\tcolumnType: 'PgTimestampString';\n\tdata: string;\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgTimestampStringBuilder<T extends ColumnBuilderBaseConfig<'string', 'PgTimestampString'>>\n\textends PgDateColumnBaseBuilder<\n\t\tT,\n\t\t{ withTimezone: boolean; precision: number | undefined }\n\t>\n{\n\tstatic readonly [entityKind]: string = 'PgTimestampStringBuilder';\n\n\tconstructor(\n\t\tname: string,\n\t\twithTimezone: boolean,\n\t\tprecision: number | undefined,\n\t) {\n\t\tsuper(name, 'string', 'PgTimestampString');\n\t\tthis.config.withTimezone = withTimezone;\n\t\tthis.config.precision = precision;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgTimestampString<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgTimestampString<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t);\n\t}\n}\n\nexport class PgTimestampString<T extends ColumnBaseConfig<'string', 'PgTimestampString'>> extends PgColumn<T> {\n\tstatic readonly [entityKind]: string = 'PgTimestampString';\n\n\treadonly withTimezone: boolean;\n\treadonly precision: number | undefined;\n\n\tconstructor(table: AnyPgTable<{ name: T['tableName'] }>, config: PgTimestampStringBuilder<T>['config']) {\n\t\tsuper(table, config);\n\t\tthis.withTimezone = config.withTimezone;\n\t\tthis.precision = config.precision;\n\t}\n\n\tgetSQLType(): string {\n\t\tconst precision = this.precision === undefined ? '' : `(${this.precision})`;\n\t\treturn `timestamp${precision}${this.withTimezone ? ' with time zone' : ''}`;\n\t}\n}\n\nexport type Precision = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface PgTimestampConfig<TMode extends 'date' | 'string' = 'date' | 'string'> {\n\tmode?: TMode;\n\tprecision?: Precision;\n\twithTimezone?: boolean;\n}\n\nexport function timestamp<TName extends string, TMode extends PgTimestampConfig['mode'] & {}>(\n\tname: TName,\n\tconfig?: PgTimestampConfig<TMode>,\n): Equal<TMode, 'string'> extends true ? PgTimestampStringBuilderInitial<TName> : PgTimestampBuilderInitial<TName>;\nexport function timestamp(\n\tname: string,\n\tconfig: PgTimestampConfig = {},\n) {\n\tif (config.mode === 'string') {\n\t\treturn new PgTimestampStringBuilder(name, config.withTimezone ?? false, config.precision);\n\t}\n\treturn new PgTimestampBuilder(name, config.withTimezone ?? false, config.precision);\n}\n"],"mappings":"AAEA,SAAS,kBAAkB;AAG3B,SAAS,gBAAgB;AACzB,SAAS,+BAA+B;AAWjC,MAAM,2BACJ,wBAIT;AAAA,EACC,QAAiB,UAAU,IAAY;AAAA,EAEvC,YACC,MACA,cACA,WACC;AACD,UAAM,MAAM,QAAQ,aAAa;AACjC,SAAK,OAAO,eAAe;AAC3B,SAAK,OAAO,YAAY;AAAA,EACzB;AAAA;AAAA,EAGS,MACR,OAC+C;AAC/C,WAAO,IAAI,YAA6C,OAAO,KAAK,MAA8C;AAAA,EACnH;AACD;AAEO,MAAM,oBAAuE,SAAY;AAAA,EAC/F,QAAiB,UAAU,IAAY;AAAA,EAE9B;AAAA,EACA;AAAA,EAET,YAAY,OAA6C,QAAyC;AACjG,UAAM,OAAO,MAAM;AACnB,SAAK,eAAe,OAAO;AAC3B,SAAK,YAAY,OAAO;AAAA,EACzB;AAAA,EAEA,aAAqB;AACpB,UAAM,YAAY,KAAK,cAAc,SAAY,KAAK,KAAK,KAAK,SAAS;AACzE,WAAO,YAAY,SAAS,GAAG,KAAK,eAAe,oBAAoB,EAAE;AAAA,EAC1E;AAAA,EAES,qBAAqB,CAAC,UAA+B;AAC7D,WAAO,IAAI,KAAK,KAAK,eAAe,QAAQ,QAAQ,OAAO;AAAA,EAC5D;AAAA,EAES,mBAAmB,CAAC,UAAwB;AACpD,WAAO,MAAM,YAAY;AAAA,EAC1B;AACD;AAWO,MAAM,iCACJ,wBAIT;AAAA,EACC,QAAiB,UAAU,IAAY;AAAA,EAEvC,YACC,MACA,cACA,WACC;AACD,UAAM,MAAM,UAAU,mBAAmB;AACzC,SAAK,OAAO,eAAe;AAC3B,SAAK,OAAO,YAAY;AAAA,EACzB;AAAA;AAAA,EAGS,MACR,OACqD;AACrD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,0BAAqF,SAAY;AAAA,EAC7G,QAAiB,UAAU,IAAY;AAAA,EAE9B;AAAA,EACA;AAAA,EAET,YAAY,OAA6C,QAA+C;AACvG,UAAM,OAAO,MAAM;AACnB,SAAK,eAAe,OAAO;AAC3B,SAAK,YAAY,OAAO;AAAA,EACzB;AAAA,EAEA,aAAqB;AACpB,UAAM,YAAY,KAAK,cAAc,SAAY,KAAK,IAAI,KAAK,SAAS;AACxE,WAAO,YAAY,SAAS,GAAG,KAAK,eAAe,oBAAoB,EAAE;AAAA,EAC1E;AACD;AAcO,SAAS,UACf,MACA,SAA4B,CAAC,GAC5B;AACD,MAAI,OAAO,SAAS,UAAU;AAC7B,WAAO,IAAI,yBAAyB,MAAM,OAAO,gBAAgB,OAAO,OAAO,SAAS;AAAA,EACzF;AACA,SAAO,IAAI,mBAAmB,MAAM,OAAO,gBAAgB,OAAO,OAAO,SAAS;AACnF;","names":[]}
|
package/postgres-js/driver.cjs
CHANGED
|
@@ -27,6 +27,11 @@ var import_dialect = require("../pg-core/dialect.cjs");
|
|
|
27
27
|
var import_relations = require("../relations.cjs");
|
|
28
28
|
var import_session = require("./session.cjs");
|
|
29
29
|
function drizzle(client, config = {}) {
|
|
30
|
+
const transparentParser = (val) => val;
|
|
31
|
+
for (const type of ["1184", "1082", "1083", "1114"]) {
|
|
32
|
+
client.options.parsers[type] = transparentParser;
|
|
33
|
+
client.options.serializers[type] = transparentParser;
|
|
34
|
+
}
|
|
30
35
|
const dialect = new import_dialect.PgDialect();
|
|
31
36
|
let logger;
|
|
32
37
|
if (config.logger === true) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/postgres-js/driver.ts"],"sourcesContent":["import type { Sql } from 'postgres';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport type { PostgresJsQueryResultHKT } from './session.ts';\nimport { PostgresJsSession } from './session.ts';\n\nexport type PostgresJsDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> = PgDatabase<PostgresJsQueryResultHKT, TSchema>;\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: Sql,\n\tconfig: DrizzleConfig<TSchema> = {},\n): PostgresJsDatabase<TSchema> {\n\tconst dialect = new PgDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new PostgresJsSession(client, dialect, schema, { logger });\n\treturn new PgDatabase(dialect, session, schema) as PostgresJsDatabase<TSchema>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA8B;AAC9B,gBAA2B;AAC3B,qBAA0B;AAC1B,uBAKO;AAGP,qBAAkC;AAM3B,SAAS,QACf,QACA,SAAiC,CAAC,GACJ;AAC9B,QAAM,UAAU,IAAI,yBAAU;AAC9B,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,mBAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,iCAAkB,QAAQ,SAAS,QAAQ,EAAE,OAAO,CAAC;AACzE,SAAO,IAAI,qBAAW,SAAS,SAAS,MAAM;AAC/C;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/postgres-js/driver.ts"],"sourcesContent":["import type { Sql } from 'postgres';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport type { PostgresJsQueryResultHKT } from './session.ts';\nimport { PostgresJsSession } from './session.ts';\n\nexport type PostgresJsDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> = PgDatabase<PostgresJsQueryResultHKT, TSchema>;\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: Sql,\n\tconfig: DrizzleConfig<TSchema> = {},\n): PostgresJsDatabase<TSchema> {\n\tconst transparentParser = (val: any) => val;\n\n\t// Override postgres.js default date parsers: https://github.com/porsager/postgres/discussions/761\n\tfor (const type of ['1184', '1082', '1083', '1114']) {\n\t\tclient.options.parsers[type as any] = transparentParser;\n\t\tclient.options.serializers[type as any] = transparentParser;\n\t}\n\n\tconst dialect = new PgDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new PostgresJsSession(client, dialect, schema, { logger });\n\treturn new PgDatabase(dialect, session, schema) as PostgresJsDatabase<TSchema>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA8B;AAC9B,gBAA2B;AAC3B,qBAA0B;AAC1B,uBAKO;AAGP,qBAAkC;AAM3B,SAAS,QACf,QACA,SAAiC,CAAC,GACJ;AAC9B,QAAM,oBAAoB,CAAC,QAAa;AAGxC,aAAW,QAAQ,CAAC,QAAQ,QAAQ,QAAQ,MAAM,GAAG;AACpD,WAAO,QAAQ,QAAQ,IAAW,IAAI;AACtC,WAAO,QAAQ,YAAY,IAAW,IAAI;AAAA,EAC3C;AAEA,QAAM,UAAU,IAAI,yBAAU;AAC9B,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,mBAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,iCAAkB,QAAQ,SAAS,QAAQ,EAAE,OAAO,CAAC;AACzE,SAAO,IAAI,qBAAW,SAAS,SAAS,MAAM;AAC/C;","names":[]}
|
package/postgres-js/driver.js
CHANGED
|
@@ -7,6 +7,11 @@ import {
|
|
|
7
7
|
} from "../relations.js";
|
|
8
8
|
import { PostgresJsSession } from "./session.js";
|
|
9
9
|
function drizzle(client, config = {}) {
|
|
10
|
+
const transparentParser = (val) => val;
|
|
11
|
+
for (const type of ["1184", "1082", "1083", "1114"]) {
|
|
12
|
+
client.options.parsers[type] = transparentParser;
|
|
13
|
+
client.options.serializers[type] = transparentParser;
|
|
14
|
+
}
|
|
10
15
|
const dialect = new PgDialect();
|
|
11
16
|
let logger;
|
|
12
17
|
if (config.logger === true) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/postgres-js/driver.ts"],"sourcesContent":["import type { Sql } from 'postgres';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport type { PostgresJsQueryResultHKT } from './session.ts';\nimport { PostgresJsSession } from './session.ts';\n\nexport type PostgresJsDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> = PgDatabase<PostgresJsQueryResultHKT, TSchema>;\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: Sql,\n\tconfig: DrizzleConfig<TSchema> = {},\n): PostgresJsDatabase<TSchema> {\n\tconst dialect = new PgDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new PostgresJsSession(client, dialect, schema, { logger });\n\treturn new PgDatabase(dialect, session, schema) as PostgresJsDatabase<TSchema>;\n}\n"],"mappings":"AACA,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAC1B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AAGP,SAAS,yBAAyB;AAM3B,SAAS,QACf,QACA,SAAiC,CAAC,GACJ;AAC9B,QAAM,UAAU,IAAI,UAAU;AAC9B,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,kBAAkB,QAAQ,SAAS,QAAQ,EAAE,OAAO,CAAC;AACzE,SAAO,IAAI,WAAW,SAAS,SAAS,MAAM;AAC/C;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/postgres-js/driver.ts"],"sourcesContent":["import type { Sql } from 'postgres';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport type { PostgresJsQueryResultHKT } from './session.ts';\nimport { PostgresJsSession } from './session.ts';\n\nexport type PostgresJsDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> = PgDatabase<PostgresJsQueryResultHKT, TSchema>;\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: Sql,\n\tconfig: DrizzleConfig<TSchema> = {},\n): PostgresJsDatabase<TSchema> {\n\tconst transparentParser = (val: any) => val;\n\n\t// Override postgres.js default date parsers: https://github.com/porsager/postgres/discussions/761\n\tfor (const type of ['1184', '1082', '1083', '1114']) {\n\t\tclient.options.parsers[type as any] = transparentParser;\n\t\tclient.options.serializers[type as any] = transparentParser;\n\t}\n\n\tconst dialect = new PgDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new PostgresJsSession(client, dialect, schema, { logger });\n\treturn new PgDatabase(dialect, session, schema) as PostgresJsDatabase<TSchema>;\n}\n"],"mappings":"AACA,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAC1B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AAGP,SAAS,yBAAyB;AAM3B,SAAS,QACf,QACA,SAAiC,CAAC,GACJ;AAC9B,QAAM,oBAAoB,CAAC,QAAa;AAGxC,aAAW,QAAQ,CAAC,QAAQ,QAAQ,QAAQ,MAAM,GAAG;AACpD,WAAO,QAAQ,QAAQ,IAAW,IAAI;AACtC,WAAO,QAAQ,YAAY,IAAW,IAAI;AAAA,EAC3C;AAEA,QAAM,UAAU,IAAI,UAAU;AAC9B,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,kBAAkB,QAAQ,SAAS,QAAQ,EAAE,OAAO,CAAC;AACzE,SAAO,IAAI,WAAW,SAAS,SAAS,MAAM;AAC/C;","names":[]}
|
package/sqlite-core/dialect.cjs
CHANGED
|
@@ -574,7 +574,7 @@ class SQLiteSyncDialect extends SQLiteDialect {
|
|
|
574
574
|
class SQLiteAsyncDialect extends SQLiteDialect {
|
|
575
575
|
static [import_entity.entityKind] = "SQLiteAsyncDialect";
|
|
576
576
|
async migrate(migrations, session, config) {
|
|
577
|
-
const migrationsTable = typeof config === "string" ? "__drizzle_migrations" : config.migrationsTable ?? "__drizzle_migrations";
|
|
577
|
+
const migrationsTable = config === void 0 ? "__drizzle_migrations" : typeof config === "string" ? "__drizzle_migrations" : config.migrationsTable ?? "__drizzle_migrations";
|
|
578
578
|
const migrationTableCreate = import_sql2.sql`
|
|
579
579
|
CREATE TABLE IF NOT EXISTS ${import_sql2.sql.identifier(migrationsTable)} (
|
|
580
580
|
id SERIAL PRIMARY KEY,
|