drizzle-orm 1.0.0-beta.1-f92627f → 1.0.0-beta.1-cdf226f

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.
Files changed (45) hide show
  1. package/effect/effect-wrapper.cjs +46 -0
  2. package/effect/effect-wrapper.cjs.map +1 -0
  3. package/effect/effect-wrapper.d.cts +8 -0
  4. package/effect/effect-wrapper.d.ts +8 -0
  5. package/effect/effect-wrapper.js +22 -0
  6. package/effect/effect-wrapper.js.map +1 -0
  7. package/effect/sqlite/db.cjs +371 -0
  8. package/effect/sqlite/db.cjs.map +1 -0
  9. package/effect/sqlite/db.d.cts +277 -0
  10. package/effect/sqlite/db.d.ts +277 -0
  11. package/effect/sqlite/db.js +351 -0
  12. package/effect/sqlite/db.js.map +1 -0
  13. package/effect/sqlite/driver.cjs +67 -0
  14. package/effect/sqlite/driver.cjs.map +1 -0
  15. package/effect/sqlite/driver.d.cts +4 -0
  16. package/effect/sqlite/driver.d.ts +4 -0
  17. package/effect/sqlite/driver.js +33 -0
  18. package/effect/sqlite/driver.js.map +1 -0
  19. package/effect/sqlite/index.cjs +25 -0
  20. package/effect/sqlite/index.cjs.map +1 -0
  21. package/effect/sqlite/index.d.cts +2 -0
  22. package/effect/sqlite/index.d.ts +2 -0
  23. package/effect/sqlite/index.js +3 -0
  24. package/effect/sqlite/index.js.map +1 -0
  25. package/effect/sqlite/query-builders/select.cjs +122 -0
  26. package/effect/sqlite/query-builders/select.cjs.map +1 -0
  27. package/effect/sqlite/query-builders/select.d.cts +62 -0
  28. package/effect/sqlite/query-builders/select.d.ts +62 -0
  29. package/effect/sqlite/query-builders/select.js +97 -0
  30. package/effect/sqlite/query-builders/select.js.map +1 -0
  31. package/effect/sqlite/session.cjs +237 -0
  32. package/effect/sqlite/session.cjs.map +1 -0
  33. package/effect/sqlite/session.d.cts +79 -0
  34. package/effect/sqlite/session.d.ts +79 -0
  35. package/effect/sqlite/session.js +212 -0
  36. package/effect/sqlite/session.js.map +1 -0
  37. package/package.json +139 -52
  38. package/sqlite-core/session.cjs.map +1 -1
  39. package/sqlite-core/session.d.cts +1 -1
  40. package/sqlite-core/session.d.ts +1 -1
  41. package/sqlite-core/session.js.map +1 -1
  42. package/version.cjs +1 -1
  43. package/version.d.cts +1 -1
  44. package/version.d.ts +1 -1
  45. package/version.js +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/effect/sqlite/session.ts"],"sourcesContent":["/* eslint-disable unicorn/no-array-method-this-argument */\n/* eslint-disable unicorn/no-array-callback-reference */\nimport { SqliteClient } from '@effect/sql-sqlite-node/SqliteClient';\nimport type { SqlError } from '@effect/sql/SqlError';\nimport { Effect } from 'effect';\nimport type * as V1 from '~/_relations.ts';\nimport type { BatchItem as BatchItem } from '~/batch.ts';\nimport { type Cache, NoopCache } from '~/cache/core/index.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport { fillPlaceholders, type Query, type SQL } from '~/sql/sql.ts';\nimport type { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type { PreparedQueryConfig, SQLiteExecuteMethod, SQLiteTransactionConfig } from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\ninterface EffectSQLiteSessionOptions {\n\tlogger?: Logger;\n}\n\nexport class EffectSQLiteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'sync', any, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'EffectSQLiteSession';\n\n\tprivate logger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tdialect: SQLiteSyncDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: EffectSQLiteSessionOptions,\n\t\t// private tx: Transaction | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = this.options.logger ?? new NoopLogger();\n\t\tthis.cache = new NoopCache();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): EffectSQLitePreparedQuery<T> {\n\t\treturn new EffectSQLitePreparedQuery(\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tprepareRelationalQuery<T extends PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => unknown,\n\t): EffectSQLitePreparedQuery<T, true> {\n\t\treturn new EffectSQLitePreparedQuery(\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tfalse,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t);\n\t}\n\n\teffectRun(query: SQL): Effect.Effect<Record<string, unknown>[], SqlError, SqliteClient> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).run() as any;\n\t}\n\n\teffectAll<T = unknown>(query: SQL): Effect.Effect<T[], SqlError, SqliteClient> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).all() as any;\n\t}\n\n\teffectGet<T = unknown>(query: SQL): Effect.Effect<T, SqlError, SqliteClient> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).get() as any;\n\t}\n\n\teffectValues<T = unknown>(query: SQL): Effect.Effect<T[], SqlError, SqliteClient> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).values() as any;\n\t}\n\n\t/** @deprecated Use `.effectRun()` for `Effect` compatibility */\n\toverride run: any = () => {\n\t\tthrow new Error('Use `.effectRun()` for `Effect` compatibility');\n\t};\n\n\t/** @deprecated Use `.effectAll()` for `Effect` compatibility */\n\toverride all: any = () => {\n\t\tthrow new Error('Use `.effectAll()` for `Effect` compatibility');\n\t};\n\n\t/** @deprecated Use `.effectGet()` for `Effect` compatibility */\n\toverride get: any = () => {\n\t\tthrow new Error('Use `.effectGet()` for `Effect` compatibility');\n\t};\n\n\t/** @deprecated Use `.effectValues()` for `Effect` compatibility */\n\toverride values: any = () => {\n\t\tthrow new Error('Use `.effectValues()` for `Effect` compatibility');\n\t};\n\n\tasync batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(_queries: T) {\n\t\tthrow new Error('Not implemented!');\n\t}\n\n\tasync migrate<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(_queries: T) {\n\t\tthrow new Error('Not implemented!');\n\t}\n\n\toverride transaction<T>(\n\t\t_transaction: any,\n\t\t_config?: SQLiteTransactionConfig,\n\t): T {\n\t\tthrow new Error('Not implemented!');\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as any).rows;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as any).rows[0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as any).rows;\n\t}\n}\n\nexport class EffectSQLitePreparedQuery<\n\tT extends PreparedQueryConfig = PreparedQueryConfig,\n\tTIsRqbV2 extends boolean = false,\n> extends SQLitePreparedQuery<\n\t{\n\t\ttype: 'sync';\n\t\trun: Effect.Effect<T['run'], SqlError, SqliteClient>;\n\t\tall: Effect.Effect<T['all'], SqlError, SqliteClient>;\n\t\tget: Effect.Effect<T['get'], SqlError, SqliteClient>;\n\t\tvalues: Effect.Effect<T['values'], SqlError, SqliteClient>;\n\t\texecute: Effect.Effect<T['execute'], SqlError, SqliteClient>;\n\t}\n> {\n\tstatic override readonly [entityKind]: string = 'EffectSQLitePreparedQuery';\n\n\tconstructor(\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\n\t\t/** @internal */ public fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t) {\n\t\tsuper('sync', executeMethod, query, cache, queryMetadata, cacheConfig);\n\t\tthis.customResultMapper = customResultMapper;\n\t\tthis.fields = fields;\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): Effect.Effect<T['run'], SqlError, SqliteClient> {\n\t\tconst { query, logger } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\n\t\treturn Effect.flatMap(SqliteClient, (client) => {\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn client.unsafe(query.sql, params as any);\n\t\t}) as any;\n\t}\n\n\tall(placeholderValues?: Record<string, unknown>): Effect.Effect<T['all'], SqlError, SqliteClient> {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\n\t\tconst { query, logger, customResultMapper, fields, joinsNotNullableMap } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn Effect.flatMap(SqliteClient, (client) => {\n\t\t\t\tlogger.logQuery(query.sql, params);\n\t\t\t\treturn client.unsafe(query.sql, params as any).withoutTransform;\n\t\t\t});\n\t\t}\n\n\t\treturn Effect.flatMap(SqliteClient, (client) => {\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn client.unsafe(query.sql, params as any).values;\n\t\t}).pipe(Effect.andThen(\n\t\t\t(rows) => {\n\t\t\t\treturn rows.map((row) =>\n\t\t\t\t\tmapResultRow(\n\t\t\t\t\t\tfields!,\n\t\t\t\t\t\trow as unknown[],\n\t\t\t\t\t\tjoinsNotNullableMap,\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t},\n\t\t));\n\t}\n\n\tprivate allRqbV2(\n\t\tplaceholderValues?: Record<string, unknown>,\n\t): Effect.Effect<T['all'], SqlError, SqliteClient> {\n\t\tconst { query, logger, customResultMapper } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\n\t\treturn Effect.flatMap(SqliteClient, (client) => {\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn client.unsafe(query.sql, params as any).withoutTransform;\n\t\t}).pipe(Effect.andThen((v) =>\n\t\t\t(customResultMapper as (\n\t\t\t\trows: Record<string, unknown>[],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(v as Record<string, unknown>[])\n\t\t));\n\t}\n\n\tget(placeholderValues?: Record<string, unknown>): Effect.Effect<T['get'], SqlError, SqliteClient> {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\n\t\tconst { query, logger, customResultMapper, fields, joinsNotNullableMap } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn Effect.flatMap(SqliteClient, (client) => {\n\t\t\t\tlogger.logQuery(query.sql, params);\n\t\t\t\treturn client.unsafe(query.sql, params as any).withoutTransform;\n\t\t\t}).pipe(Effect.andThen((v) => v[0]));\n\t\t}\n\n\t\treturn Effect.flatMap(SqliteClient, (client) => {\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn client.unsafe(query.sql, params as any).values;\n\t\t}).pipe(Effect.andThen(\n\t\t\t(v) => {\n\t\t\t\tconst row = (<unknown[][]> v)[0];\n\n\t\t\t\tif (row === undefined) return row;\n\n\t\t\t\treturn mapResultRow<[Record<string, unknown>]>(\n\t\t\t\t\tfields!,\n\t\t\t\t\trow,\n\t\t\t\t\tjoinsNotNullableMap,\n\t\t\t\t);\n\t\t\t},\n\t\t));\n\t}\n\n\tprivate getRqbV2(placeholderValues?: Record<string, unknown>): Effect.Effect<T['get'], SqlError, SqliteClient> {\n\t\tconst { query, logger, customResultMapper } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\n\t\treturn Effect.flatMap(SqliteClient, (client) => {\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn client.unsafe(query.sql, params as any).withoutTransform;\n\t\t}).pipe(Effect.andThen(\n\t\t\t(v) => {\n\t\t\t\tconst row = (<Record<string, unknown>[]> v)[0];\n\n\t\t\t\tif (row === undefined) return row;\n\n\t\t\t\treturn (customResultMapper as (\n\t\t\t\t\trows: Record<string, unknown>[],\n\t\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t\t) => unknown)([row]);\n\t\t\t},\n\t\t));\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): Effect.Effect<T['values'], SqlError, SqliteClient> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\n\t\treturn Effect.flatMap(SqliteClient, (client) => {\n\t\t\tthis.logger.logQuery(this.query.sql, params);\n\t\t\treturn client.unsafe(this.query.sql, params as any).values;\n\t\t});\n\t}\n\n\teffect(placeholderValues?: Record<string, unknown>): Effect.Effect<T['execute'], SqlError, SqliteClient> {\n\t\treturn this[this.executeMethod](placeholderValues);\n\t}\n\n\t/** @deprecated Use `.effect()` for `Effect` compatibility */\n\toverride execute(\n\t\t_placeholderValues?: Record<string, unknown>,\n\t): never {\n\t\tthrow new Error('Use `.effect()` for `Effect` compatibility');\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,79 @@
1
+ import { SqliteClient } from '@effect/sql-sqlite-node/SqliteClient';
2
+ import type { SqlError } from '@effect/sql/SqlError';
3
+ import { Effect } from 'effect';
4
+ import type * as V1 from "../../_relations.cjs";
5
+ import type { BatchItem as BatchItem } from "../../batch.cjs";
6
+ import { type Cache } from "../../cache/core/index.cjs";
7
+ import type { WithCacheConfig } from "../../cache/core/types.cjs";
8
+ import { entityKind } from "../../entity.cjs";
9
+ import type { Logger } from "../../logger.cjs";
10
+ import type { AnyRelations } from "../../relations.cjs";
11
+ import { type Query, type SQL } from "../../sql/sql.cjs";
12
+ import type { SQLiteSyncDialect } from "../../sqlite-core/dialect.cjs";
13
+ import type { SelectedFieldsOrdered } from "../../sqlite-core/query-builders/select.types.cjs";
14
+ import type { PreparedQueryConfig, SQLiteExecuteMethod, SQLiteTransactionConfig } from "../../sqlite-core/session.cjs";
15
+ import { SQLitePreparedQuery, SQLiteSession } from "../../sqlite-core/session.cjs";
16
+ interface EffectSQLiteSessionOptions {
17
+ logger?: Logger;
18
+ }
19
+ export declare class EffectSQLiteSession<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TSchema extends V1.TablesRelationalConfig> extends SQLiteSession<'sync', any, TFullSchema, TRelations, TSchema> {
20
+ private relations;
21
+ private schema;
22
+ private options;
23
+ static readonly [entityKind]: string;
24
+ private logger;
25
+ private cache;
26
+ constructor(dialect: SQLiteSyncDialect, relations: TRelations, schema: V1.RelationalSchemaConfig<TSchema> | undefined, options: EffectSQLiteSessionOptions);
27
+ prepareQuery<T extends PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => unknown, queryMetadata?: {
28
+ type: 'select' | 'update' | 'delete' | 'insert';
29
+ tables: string[];
30
+ }, cacheConfig?: WithCacheConfig): EffectSQLitePreparedQuery<T>;
31
+ prepareRelationalQuery<T extends PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, customResultMapper: (rows: Record<string, unknown>[]) => unknown): EffectSQLitePreparedQuery<T, true>;
32
+ effectRun(query: SQL): Effect.Effect<Record<string, unknown>[], SqlError, SqliteClient>;
33
+ effectAll<T = unknown>(query: SQL): Effect.Effect<T[], SqlError, SqliteClient>;
34
+ effectGet<T = unknown>(query: SQL): Effect.Effect<T, SqlError, SqliteClient>;
35
+ effectValues<T = unknown>(query: SQL): Effect.Effect<T[], SqlError, SqliteClient>;
36
+ /** @deprecated Use `.effectRun()` for `Effect` compatibility */
37
+ run: any;
38
+ /** @deprecated Use `.effectAll()` for `Effect` compatibility */
39
+ all: any;
40
+ /** @deprecated Use `.effectGet()` for `Effect` compatibility */
41
+ get: any;
42
+ /** @deprecated Use `.effectValues()` for `Effect` compatibility */
43
+ values: any;
44
+ batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(_queries: T): Promise<void>;
45
+ migrate<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(_queries: T): Promise<void>;
46
+ transaction<T>(_transaction: any, _config?: SQLiteTransactionConfig): T;
47
+ extractRawAllValueFromBatchResult(result: unknown): unknown;
48
+ extractRawGetValueFromBatchResult(result: unknown): unknown;
49
+ extractRawValuesValueFromBatchResult(result: unknown): unknown;
50
+ }
51
+ export declare class EffectSQLitePreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false> extends SQLitePreparedQuery<{
52
+ type: 'sync';
53
+ run: Effect.Effect<T['run'], SqlError, SqliteClient>;
54
+ all: Effect.Effect<T['all'], SqlError, SqliteClient>;
55
+ get: Effect.Effect<T['get'], SqlError, SqliteClient>;
56
+ values: Effect.Effect<T['values'], SqlError, SqliteClient>;
57
+ execute: Effect.Effect<T['execute'], SqlError, SqliteClient>;
58
+ }> {
59
+ private logger;
60
+ private _isResponseInArrayMode;
61
+ private customResultMapper?;
62
+ private isRqbV2Query?;
63
+ static readonly [entityKind]: string;
64
+ constructor(query: Query, logger: Logger, cache: Cache, queryMetadata: {
65
+ type: 'select' | 'update' | 'delete' | 'insert';
66
+ tables: string[];
67
+ } | undefined, cacheConfig: WithCacheConfig | undefined,
68
+ /** @internal */ fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown) | undefined, isRqbV2Query?: TIsRqbV2 | undefined);
69
+ run(placeholderValues?: Record<string, unknown>): Effect.Effect<T['run'], SqlError, SqliteClient>;
70
+ all(placeholderValues?: Record<string, unknown>): Effect.Effect<T['all'], SqlError, SqliteClient>;
71
+ private allRqbV2;
72
+ get(placeholderValues?: Record<string, unknown>): Effect.Effect<T['get'], SqlError, SqliteClient>;
73
+ private getRqbV2;
74
+ values(placeholderValues?: Record<string, unknown>): Effect.Effect<T['values'], SqlError, SqliteClient>;
75
+ effect(placeholderValues?: Record<string, unknown>): Effect.Effect<T['execute'], SqlError, SqliteClient>;
76
+ /** @deprecated Use `.effect()` for `Effect` compatibility */
77
+ execute(_placeholderValues?: Record<string, unknown>): never;
78
+ }
79
+ export {};
@@ -0,0 +1,79 @@
1
+ import { SqliteClient } from '@effect/sql-sqlite-node/SqliteClient';
2
+ import type { SqlError } from '@effect/sql/SqlError';
3
+ import { Effect } from 'effect';
4
+ import type * as V1 from "../../_relations.js";
5
+ import type { BatchItem as BatchItem } from "../../batch.js";
6
+ import { type Cache } from "../../cache/core/index.js";
7
+ import type { WithCacheConfig } from "../../cache/core/types.js";
8
+ import { entityKind } from "../../entity.js";
9
+ import type { Logger } from "../../logger.js";
10
+ import type { AnyRelations } from "../../relations.js";
11
+ import { type Query, type SQL } from "../../sql/sql.js";
12
+ import type { SQLiteSyncDialect } from "../../sqlite-core/dialect.js";
13
+ import type { SelectedFieldsOrdered } from "../../sqlite-core/query-builders/select.types.js";
14
+ import type { PreparedQueryConfig, SQLiteExecuteMethod, SQLiteTransactionConfig } from "../../sqlite-core/session.js";
15
+ import { SQLitePreparedQuery, SQLiteSession } from "../../sqlite-core/session.js";
16
+ interface EffectSQLiteSessionOptions {
17
+ logger?: Logger;
18
+ }
19
+ export declare class EffectSQLiteSession<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TSchema extends V1.TablesRelationalConfig> extends SQLiteSession<'sync', any, TFullSchema, TRelations, TSchema> {
20
+ private relations;
21
+ private schema;
22
+ private options;
23
+ static readonly [entityKind]: string;
24
+ private logger;
25
+ private cache;
26
+ constructor(dialect: SQLiteSyncDialect, relations: TRelations, schema: V1.RelationalSchemaConfig<TSchema> | undefined, options: EffectSQLiteSessionOptions);
27
+ prepareQuery<T extends PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => unknown, queryMetadata?: {
28
+ type: 'select' | 'update' | 'delete' | 'insert';
29
+ tables: string[];
30
+ }, cacheConfig?: WithCacheConfig): EffectSQLitePreparedQuery<T>;
31
+ prepareRelationalQuery<T extends PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, customResultMapper: (rows: Record<string, unknown>[]) => unknown): EffectSQLitePreparedQuery<T, true>;
32
+ effectRun(query: SQL): Effect.Effect<Record<string, unknown>[], SqlError, SqliteClient>;
33
+ effectAll<T = unknown>(query: SQL): Effect.Effect<T[], SqlError, SqliteClient>;
34
+ effectGet<T = unknown>(query: SQL): Effect.Effect<T, SqlError, SqliteClient>;
35
+ effectValues<T = unknown>(query: SQL): Effect.Effect<T[], SqlError, SqliteClient>;
36
+ /** @deprecated Use `.effectRun()` for `Effect` compatibility */
37
+ run: any;
38
+ /** @deprecated Use `.effectAll()` for `Effect` compatibility */
39
+ all: any;
40
+ /** @deprecated Use `.effectGet()` for `Effect` compatibility */
41
+ get: any;
42
+ /** @deprecated Use `.effectValues()` for `Effect` compatibility */
43
+ values: any;
44
+ batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(_queries: T): Promise<void>;
45
+ migrate<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(_queries: T): Promise<void>;
46
+ transaction<T>(_transaction: any, _config?: SQLiteTransactionConfig): T;
47
+ extractRawAllValueFromBatchResult(result: unknown): unknown;
48
+ extractRawGetValueFromBatchResult(result: unknown): unknown;
49
+ extractRawValuesValueFromBatchResult(result: unknown): unknown;
50
+ }
51
+ export declare class EffectSQLitePreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false> extends SQLitePreparedQuery<{
52
+ type: 'sync';
53
+ run: Effect.Effect<T['run'], SqlError, SqliteClient>;
54
+ all: Effect.Effect<T['all'], SqlError, SqliteClient>;
55
+ get: Effect.Effect<T['get'], SqlError, SqliteClient>;
56
+ values: Effect.Effect<T['values'], SqlError, SqliteClient>;
57
+ execute: Effect.Effect<T['execute'], SqlError, SqliteClient>;
58
+ }> {
59
+ private logger;
60
+ private _isResponseInArrayMode;
61
+ private customResultMapper?;
62
+ private isRqbV2Query?;
63
+ static readonly [entityKind]: string;
64
+ constructor(query: Query, logger: Logger, cache: Cache, queryMetadata: {
65
+ type: 'select' | 'update' | 'delete' | 'insert';
66
+ tables: string[];
67
+ } | undefined, cacheConfig: WithCacheConfig | undefined,
68
+ /** @internal */ fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown) | undefined, isRqbV2Query?: TIsRqbV2 | undefined);
69
+ run(placeholderValues?: Record<string, unknown>): Effect.Effect<T['run'], SqlError, SqliteClient>;
70
+ all(placeholderValues?: Record<string, unknown>): Effect.Effect<T['all'], SqlError, SqliteClient>;
71
+ private allRqbV2;
72
+ get(placeholderValues?: Record<string, unknown>): Effect.Effect<T['get'], SqlError, SqliteClient>;
73
+ private getRqbV2;
74
+ values(placeholderValues?: Record<string, unknown>): Effect.Effect<T['values'], SqlError, SqliteClient>;
75
+ effect(placeholderValues?: Record<string, unknown>): Effect.Effect<T['execute'], SqlError, SqliteClient>;
76
+ /** @deprecated Use `.effect()` for `Effect` compatibility */
77
+ execute(_placeholderValues?: Record<string, unknown>): never;
78
+ }
79
+ export {};
@@ -0,0 +1,212 @@
1
+ import { SqliteClient } from "@effect/sql-sqlite-node/SqliteClient";
2
+ import { Effect } from "effect";
3
+ import { NoopCache } from "../../cache/core/index.js";
4
+ import { entityKind } from "../../entity.js";
5
+ import { NoopLogger } from "../../logger.js";
6
+ import { fillPlaceholders } from "../../sql/sql.js";
7
+ import { SQLitePreparedQuery, SQLiteSession } from "../../sqlite-core/session.js";
8
+ import { mapResultRow } from "../../utils.js";
9
+ class EffectSQLiteSession extends SQLiteSession {
10
+ constructor(dialect, relations, schema, options) {
11
+ super(dialect);
12
+ this.relations = relations;
13
+ this.schema = schema;
14
+ this.options = options;
15
+ this.logger = this.options.logger ?? new NoopLogger();
16
+ this.cache = new NoopCache();
17
+ }
18
+ static [entityKind] = "EffectSQLiteSession";
19
+ logger;
20
+ cache;
21
+ prepareQuery(query, fields, executeMethod, isResponseInArrayMode, customResultMapper, queryMetadata, cacheConfig) {
22
+ return new EffectSQLitePreparedQuery(
23
+ query,
24
+ this.logger,
25
+ this.cache,
26
+ queryMetadata,
27
+ cacheConfig,
28
+ fields,
29
+ executeMethod,
30
+ isResponseInArrayMode,
31
+ customResultMapper
32
+ );
33
+ }
34
+ prepareRelationalQuery(query, fields, executeMethod, customResultMapper) {
35
+ return new EffectSQLitePreparedQuery(
36
+ query,
37
+ this.logger,
38
+ this.cache,
39
+ void 0,
40
+ void 0,
41
+ fields,
42
+ executeMethod,
43
+ false,
44
+ customResultMapper,
45
+ true
46
+ );
47
+ }
48
+ effectRun(query) {
49
+ return this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), void 0, "run", false).run();
50
+ }
51
+ effectAll(query) {
52
+ return this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), void 0, "run", false).all();
53
+ }
54
+ effectGet(query) {
55
+ return this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), void 0, "run", false).get();
56
+ }
57
+ effectValues(query) {
58
+ return this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), void 0, "run", false).values();
59
+ }
60
+ /** @deprecated Use `.effectRun()` for `Effect` compatibility */
61
+ run = () => {
62
+ throw new Error("Use `.effectRun()` for `Effect` compatibility");
63
+ };
64
+ /** @deprecated Use `.effectAll()` for `Effect` compatibility */
65
+ all = () => {
66
+ throw new Error("Use `.effectAll()` for `Effect` compatibility");
67
+ };
68
+ /** @deprecated Use `.effectGet()` for `Effect` compatibility */
69
+ get = () => {
70
+ throw new Error("Use `.effectGet()` for `Effect` compatibility");
71
+ };
72
+ /** @deprecated Use `.effectValues()` for `Effect` compatibility */
73
+ values = () => {
74
+ throw new Error("Use `.effectValues()` for `Effect` compatibility");
75
+ };
76
+ async batch(_queries) {
77
+ throw new Error("Not implemented!");
78
+ }
79
+ async migrate(_queries) {
80
+ throw new Error("Not implemented!");
81
+ }
82
+ transaction(_transaction, _config) {
83
+ throw new Error("Not implemented!");
84
+ }
85
+ extractRawAllValueFromBatchResult(result) {
86
+ return result.rows;
87
+ }
88
+ extractRawGetValueFromBatchResult(result) {
89
+ return result.rows[0];
90
+ }
91
+ extractRawValuesValueFromBatchResult(result) {
92
+ return result.rows;
93
+ }
94
+ }
95
+ class EffectSQLitePreparedQuery extends SQLitePreparedQuery {
96
+ constructor(query, logger, cache, queryMetadata, cacheConfig, fields, executeMethod, _isResponseInArrayMode, customResultMapper, isRqbV2Query) {
97
+ super("sync", executeMethod, query, cache, queryMetadata, cacheConfig);
98
+ this.logger = logger;
99
+ this.fields = fields;
100
+ this._isResponseInArrayMode = _isResponseInArrayMode;
101
+ this.customResultMapper = customResultMapper;
102
+ this.isRqbV2Query = isRqbV2Query;
103
+ this.customResultMapper = customResultMapper;
104
+ this.fields = fields;
105
+ }
106
+ static [entityKind] = "EffectSQLitePreparedQuery";
107
+ run(placeholderValues) {
108
+ const { query, logger } = this;
109
+ const params = fillPlaceholders(query.params, placeholderValues ?? {});
110
+ return Effect.flatMap(SqliteClient, (client) => {
111
+ logger.logQuery(query.sql, params);
112
+ return client.unsafe(query.sql, params);
113
+ });
114
+ }
115
+ all(placeholderValues) {
116
+ if (this.isRqbV2Query) return this.allRqbV2(placeholderValues);
117
+ const { query, logger, customResultMapper, fields, joinsNotNullableMap } = this;
118
+ const params = fillPlaceholders(query.params, placeholderValues ?? {});
119
+ if (!fields && !customResultMapper) {
120
+ return Effect.flatMap(SqliteClient, (client) => {
121
+ logger.logQuery(query.sql, params);
122
+ return client.unsafe(query.sql, params).withoutTransform;
123
+ });
124
+ }
125
+ return Effect.flatMap(SqliteClient, (client) => {
126
+ logger.logQuery(query.sql, params);
127
+ return client.unsafe(query.sql, params).values;
128
+ }).pipe(Effect.andThen(
129
+ (rows) => {
130
+ return rows.map(
131
+ (row) => mapResultRow(
132
+ fields,
133
+ row,
134
+ joinsNotNullableMap
135
+ )
136
+ );
137
+ }
138
+ ));
139
+ }
140
+ allRqbV2(placeholderValues) {
141
+ const { query, logger, customResultMapper } = this;
142
+ const params = fillPlaceholders(query.params, placeholderValues ?? {});
143
+ return Effect.flatMap(SqliteClient, (client) => {
144
+ logger.logQuery(query.sql, params);
145
+ return client.unsafe(query.sql, params).withoutTransform;
146
+ }).pipe(Effect.andThen(
147
+ (v) => customResultMapper(v)
148
+ ));
149
+ }
150
+ get(placeholderValues) {
151
+ if (this.isRqbV2Query) return this.getRqbV2(placeholderValues);
152
+ const { query, logger, customResultMapper, fields, joinsNotNullableMap } = this;
153
+ const params = fillPlaceholders(query.params, placeholderValues ?? {});
154
+ if (!fields && !customResultMapper) {
155
+ return Effect.flatMap(SqliteClient, (client) => {
156
+ logger.logQuery(query.sql, params);
157
+ return client.unsafe(query.sql, params).withoutTransform;
158
+ }).pipe(Effect.andThen((v) => v[0]));
159
+ }
160
+ return Effect.flatMap(SqliteClient, (client) => {
161
+ logger.logQuery(query.sql, params);
162
+ return client.unsafe(query.sql, params).values;
163
+ }).pipe(Effect.andThen(
164
+ (v) => {
165
+ const row = v[0];
166
+ if (row === void 0) return row;
167
+ return mapResultRow(
168
+ fields,
169
+ row,
170
+ joinsNotNullableMap
171
+ );
172
+ }
173
+ ));
174
+ }
175
+ getRqbV2(placeholderValues) {
176
+ const { query, logger, customResultMapper } = this;
177
+ const params = fillPlaceholders(query.params, placeholderValues ?? {});
178
+ return Effect.flatMap(SqliteClient, (client) => {
179
+ logger.logQuery(query.sql, params);
180
+ return client.unsafe(query.sql, params).withoutTransform;
181
+ }).pipe(Effect.andThen(
182
+ (v) => {
183
+ const row = v[0];
184
+ if (row === void 0) return row;
185
+ return customResultMapper([row]);
186
+ }
187
+ ));
188
+ }
189
+ values(placeholderValues) {
190
+ const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
191
+ return Effect.flatMap(SqliteClient, (client) => {
192
+ this.logger.logQuery(this.query.sql, params);
193
+ return client.unsafe(this.query.sql, params).values;
194
+ });
195
+ }
196
+ effect(placeholderValues) {
197
+ return this[this.executeMethod](placeholderValues);
198
+ }
199
+ /** @deprecated Use `.effect()` for `Effect` compatibility */
200
+ execute(_placeholderValues) {
201
+ throw new Error("Use `.effect()` for `Effect` compatibility");
202
+ }
203
+ /** @internal */
204
+ isResponseInArrayMode() {
205
+ return this._isResponseInArrayMode;
206
+ }
207
+ }
208
+ export {
209
+ EffectSQLitePreparedQuery,
210
+ EffectSQLiteSession
211
+ };
212
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/effect/sqlite/session.ts"],"sourcesContent":["/* eslint-disable unicorn/no-array-method-this-argument */\n/* eslint-disable unicorn/no-array-callback-reference */\nimport { SqliteClient } from '@effect/sql-sqlite-node/SqliteClient';\nimport type { SqlError } from '@effect/sql/SqlError';\nimport { Effect } from 'effect';\nimport type * as V1 from '~/_relations.ts';\nimport type { BatchItem as BatchItem } from '~/batch.ts';\nimport { type Cache, NoopCache } from '~/cache/core/index.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport { fillPlaceholders, type Query, type SQL } from '~/sql/sql.ts';\nimport type { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type { PreparedQueryConfig, SQLiteExecuteMethod, SQLiteTransactionConfig } from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\ninterface EffectSQLiteSessionOptions {\n\tlogger?: Logger;\n}\n\nexport class EffectSQLiteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'sync', any, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'EffectSQLiteSession';\n\n\tprivate logger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tdialect: SQLiteSyncDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: EffectSQLiteSessionOptions,\n\t\t// private tx: Transaction | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = this.options.logger ?? new NoopLogger();\n\t\tthis.cache = new NoopCache();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): EffectSQLitePreparedQuery<T> {\n\t\treturn new EffectSQLitePreparedQuery(\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tprepareRelationalQuery<T extends PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => unknown,\n\t): EffectSQLitePreparedQuery<T, true> {\n\t\treturn new EffectSQLitePreparedQuery(\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tfalse,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t);\n\t}\n\n\teffectRun(query: SQL): Effect.Effect<Record<string, unknown>[], SqlError, SqliteClient> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).run() as any;\n\t}\n\n\teffectAll<T = unknown>(query: SQL): Effect.Effect<T[], SqlError, SqliteClient> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).all() as any;\n\t}\n\n\teffectGet<T = unknown>(query: SQL): Effect.Effect<T, SqlError, SqliteClient> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).get() as any;\n\t}\n\n\teffectValues<T = unknown>(query: SQL): Effect.Effect<T[], SqlError, SqliteClient> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).values() as any;\n\t}\n\n\t/** @deprecated Use `.effectRun()` for `Effect` compatibility */\n\toverride run: any = () => {\n\t\tthrow new Error('Use `.effectRun()` for `Effect` compatibility');\n\t};\n\n\t/** @deprecated Use `.effectAll()` for `Effect` compatibility */\n\toverride all: any = () => {\n\t\tthrow new Error('Use `.effectAll()` for `Effect` compatibility');\n\t};\n\n\t/** @deprecated Use `.effectGet()` for `Effect` compatibility */\n\toverride get: any = () => {\n\t\tthrow new Error('Use `.effectGet()` for `Effect` compatibility');\n\t};\n\n\t/** @deprecated Use `.effectValues()` for `Effect` compatibility */\n\toverride values: any = () => {\n\t\tthrow new Error('Use `.effectValues()` for `Effect` compatibility');\n\t};\n\n\tasync batch<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(_queries: T) {\n\t\tthrow new Error('Not implemented!');\n\t}\n\n\tasync migrate<T extends BatchItem<'sqlite'>[] | readonly BatchItem<'sqlite'>[]>(_queries: T) {\n\t\tthrow new Error('Not implemented!');\n\t}\n\n\toverride transaction<T>(\n\t\t_transaction: any,\n\t\t_config?: SQLiteTransactionConfig,\n\t): T {\n\t\tthrow new Error('Not implemented!');\n\t}\n\n\toverride extractRawAllValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as any).rows;\n\t}\n\n\toverride extractRawGetValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as any).rows[0];\n\t}\n\n\toverride extractRawValuesValueFromBatchResult(result: unknown): unknown {\n\t\treturn (result as any).rows;\n\t}\n}\n\nexport class EffectSQLitePreparedQuery<\n\tT extends PreparedQueryConfig = PreparedQueryConfig,\n\tTIsRqbV2 extends boolean = false,\n> extends SQLitePreparedQuery<\n\t{\n\t\ttype: 'sync';\n\t\trun: Effect.Effect<T['run'], SqlError, SqliteClient>;\n\t\tall: Effect.Effect<T['all'], SqlError, SqliteClient>;\n\t\tget: Effect.Effect<T['get'], SqlError, SqliteClient>;\n\t\tvalues: Effect.Effect<T['values'], SqlError, SqliteClient>;\n\t\texecute: Effect.Effect<T['execute'], SqlError, SqliteClient>;\n\t}\n> {\n\tstatic override readonly [entityKind]: string = 'EffectSQLitePreparedQuery';\n\n\tconstructor(\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\n\t\t/** @internal */ public fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t) {\n\t\tsuper('sync', executeMethod, query, cache, queryMetadata, cacheConfig);\n\t\tthis.customResultMapper = customResultMapper;\n\t\tthis.fields = fields;\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): Effect.Effect<T['run'], SqlError, SqliteClient> {\n\t\tconst { query, logger } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\n\t\treturn Effect.flatMap(SqliteClient, (client) => {\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn client.unsafe(query.sql, params as any);\n\t\t}) as any;\n\t}\n\n\tall(placeholderValues?: Record<string, unknown>): Effect.Effect<T['all'], SqlError, SqliteClient> {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\n\t\tconst { query, logger, customResultMapper, fields, joinsNotNullableMap } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn Effect.flatMap(SqliteClient, (client) => {\n\t\t\t\tlogger.logQuery(query.sql, params);\n\t\t\t\treturn client.unsafe(query.sql, params as any).withoutTransform;\n\t\t\t});\n\t\t}\n\n\t\treturn Effect.flatMap(SqliteClient, (client) => {\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn client.unsafe(query.sql, params as any).values;\n\t\t}).pipe(Effect.andThen(\n\t\t\t(rows) => {\n\t\t\t\treturn rows.map((row) =>\n\t\t\t\t\tmapResultRow(\n\t\t\t\t\t\tfields!,\n\t\t\t\t\t\trow as unknown[],\n\t\t\t\t\t\tjoinsNotNullableMap,\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t},\n\t\t));\n\t}\n\n\tprivate allRqbV2(\n\t\tplaceholderValues?: Record<string, unknown>,\n\t): Effect.Effect<T['all'], SqlError, SqliteClient> {\n\t\tconst { query, logger, customResultMapper } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\n\t\treturn Effect.flatMap(SqliteClient, (client) => {\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn client.unsafe(query.sql, params as any).withoutTransform;\n\t\t}).pipe(Effect.andThen((v) =>\n\t\t\t(customResultMapper as (\n\t\t\t\trows: Record<string, unknown>[],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(v as Record<string, unknown>[])\n\t\t));\n\t}\n\n\tget(placeholderValues?: Record<string, unknown>): Effect.Effect<T['get'], SqlError, SqliteClient> {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\n\t\tconst { query, logger, customResultMapper, fields, joinsNotNullableMap } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn Effect.flatMap(SqliteClient, (client) => {\n\t\t\t\tlogger.logQuery(query.sql, params);\n\t\t\t\treturn client.unsafe(query.sql, params as any).withoutTransform;\n\t\t\t}).pipe(Effect.andThen((v) => v[0]));\n\t\t}\n\n\t\treturn Effect.flatMap(SqliteClient, (client) => {\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn client.unsafe(query.sql, params as any).values;\n\t\t}).pipe(Effect.andThen(\n\t\t\t(v) => {\n\t\t\t\tconst row = (<unknown[][]> v)[0];\n\n\t\t\t\tif (row === undefined) return row;\n\n\t\t\t\treturn mapResultRow<[Record<string, unknown>]>(\n\t\t\t\t\tfields!,\n\t\t\t\t\trow,\n\t\t\t\t\tjoinsNotNullableMap,\n\t\t\t\t);\n\t\t\t},\n\t\t));\n\t}\n\n\tprivate getRqbV2(placeholderValues?: Record<string, unknown>): Effect.Effect<T['get'], SqlError, SqliteClient> {\n\t\tconst { query, logger, customResultMapper } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\n\t\treturn Effect.flatMap(SqliteClient, (client) => {\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn client.unsafe(query.sql, params as any).withoutTransform;\n\t\t}).pipe(Effect.andThen(\n\t\t\t(v) => {\n\t\t\t\tconst row = (<Record<string, unknown>[]> v)[0];\n\n\t\t\t\tif (row === undefined) return row;\n\n\t\t\t\treturn (customResultMapper as (\n\t\t\t\t\trows: Record<string, unknown>[],\n\t\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t\t) => unknown)([row]);\n\t\t\t},\n\t\t));\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): Effect.Effect<T['values'], SqlError, SqliteClient> {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\n\t\treturn Effect.flatMap(SqliteClient, (client) => {\n\t\t\tthis.logger.logQuery(this.query.sql, params);\n\t\t\treturn client.unsafe(this.query.sql, params as any).values;\n\t\t});\n\t}\n\n\teffect(placeholderValues?: Record<string, unknown>): Effect.Effect<T['execute'], SqlError, SqliteClient> {\n\t\treturn this[this.executeMethod](placeholderValues);\n\t}\n\n\t/** @deprecated Use `.effect()` for `Effect` compatibility */\n\toverride execute(\n\t\t_placeholderValues?: Record<string, unknown>,\n\t): never {\n\t\tthrow new Error('Use `.effect()` for `Effect` compatibility');\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n"],"mappings":"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","names":[]}