@turystack/nestjs-database 0.0.10 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +39 -0
  2. package/dist/audit.context.d.ts +7 -0
  3. package/dist/audit.context.d.ts.map +1 -0
  4. package/dist/audit.context.js +23 -0
  5. package/dist/audit.context.js.map +1 -0
  6. package/dist/database.helpers.d.ts +5 -0
  7. package/dist/database.helpers.d.ts.map +1 -0
  8. package/dist/database.helpers.js +7 -0
  9. package/dist/database.helpers.js.map +1 -0
  10. package/dist/database.module.d.ts +3 -1
  11. package/dist/database.module.d.ts.map +1 -1
  12. package/dist/database.module.js +36 -8
  13. package/dist/database.module.js.map +1 -1
  14. package/dist/database.service.d.ts +1 -3
  15. package/dist/database.service.d.ts.map +1 -1
  16. package/dist/database.service.js +5 -4
  17. package/dist/database.service.js.map +1 -1
  18. package/dist/drizzle/client.d.ts +12 -0
  19. package/dist/drizzle/client.d.ts.map +1 -0
  20. package/dist/drizzle/client.drizzle.d.ts +1 -7
  21. package/dist/drizzle/client.drizzle.d.ts.map +1 -1
  22. package/dist/drizzle/client.drizzle.js +3 -14
  23. package/dist/drizzle/client.drizzle.js.map +1 -1
  24. package/dist/drizzle/client.js +34 -0
  25. package/dist/drizzle/client.js.map +1 -0
  26. package/dist/drizzle/index.d.ts +4 -0
  27. package/dist/drizzle/index.d.ts.map +1 -0
  28. package/dist/drizzle/index.js +4 -0
  29. package/dist/drizzle/index.js.map +1 -0
  30. package/dist/drizzle/schema-builder.drizzle.d.ts +1 -1
  31. package/dist/drizzle/schema-builder.drizzle.d.ts.map +1 -1
  32. package/dist/drizzle/schema-builder.drizzle.js +7 -2
  33. package/dist/drizzle/schema-builder.drizzle.js.map +1 -1
  34. package/dist/drizzle/schema-builder.types.drizzle.d.ts.map +1 -1
  35. package/dist/drizzle/transaction-context.d.ts +9 -0
  36. package/dist/drizzle/transaction-context.d.ts.map +1 -0
  37. package/dist/drizzle/transaction-context.drizzle.d.ts +8 -0
  38. package/dist/drizzle/transaction-context.drizzle.d.ts.map +1 -1
  39. package/dist/drizzle/transaction-context.drizzle.js +29 -0
  40. package/dist/drizzle/transaction-context.drizzle.js.map +1 -1
  41. package/dist/drizzle/transaction-context.js +15 -0
  42. package/dist/drizzle/transaction-context.js.map +1 -0
  43. package/dist/drizzle/transactional.decorator.d.ts +3 -0
  44. package/dist/drizzle/transactional.decorator.d.ts.map +1 -0
  45. package/dist/drizzle/transactional.decorator.js +15 -0
  46. package/dist/drizzle/transactional.decorator.js.map +1 -0
  47. package/dist/drizzle/transactional.drizzle.d.ts.map +1 -1
  48. package/dist/drizzle/transactional.drizzle.js +20 -2
  49. package/dist/drizzle/transactional.drizzle.js.map +1 -1
  50. package/dist/index.d.ts +6 -1
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +3 -0
  53. package/dist/index.js.map +1 -1
  54. package/dist/prisma/index.d.ts +3 -0
  55. package/dist/prisma/index.d.ts.map +1 -0
  56. package/dist/prisma/index.js +3 -0
  57. package/dist/prisma/index.js.map +1 -0
  58. package/dist/prisma/prisma.client.d.ts +2 -0
  59. package/dist/prisma/prisma.client.d.ts.map +1 -0
  60. package/dist/prisma/prisma.client.js +13 -0
  61. package/dist/prisma/prisma.client.js.map +1 -0
  62. package/dist/prisma/transactional.decorator.d.ts +2 -0
  63. package/dist/prisma/transactional.decorator.d.ts.map +1 -0
  64. package/dist/prisma/transactional.decorator.js +3 -0
  65. package/dist/prisma/transactional.decorator.js.map +1 -0
  66. package/dist/repository/table-repository.d.ts +6 -0
  67. package/dist/repository/table-repository.d.ts.map +1 -1
  68. package/dist/repository/table-repository.errors.d.ts.map +1 -1
  69. package/dist/repository/table-repository.js +115 -39
  70. package/dist/repository/table-repository.js.map +1 -1
  71. package/dist/repository/table-repository.types.d.ts +3 -1
  72. package/dist/repository/table-repository.types.d.ts.map +1 -1
  73. package/dist/schema-builder.d.ts +7 -0
  74. package/dist/schema-builder.d.ts.map +1 -0
  75. package/dist/schema-builder.js +32 -0
  76. package/dist/schema-builder.js.map +1 -0
  77. package/dist/schema-builder.types.d.ts +8 -0
  78. package/dist/schema-builder.types.d.ts.map +1 -0
  79. package/dist/schema-builder.types.js +2 -0
  80. package/dist/schema-builder.types.js.map +1 -0
  81. package/dist/utils/uuid-v7.d.ts +2 -0
  82. package/dist/utils/uuid-v7.d.ts.map +1 -0
  83. package/dist/utils/uuid-v7.js +2 -0
  84. package/dist/utils/uuid-v7.js.map +1 -0
  85. package/package.json +22 -8
package/README.md ADDED
@@ -0,0 +1,39 @@
1
+ # @turystack/nestjs-database
2
+
3
+ Typed database module for NestJS: schema builder, per-table repositories, and transactional decorator. PostgreSQL (Drizzle) built-in.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pnpm add @turystack/nestjs-database
9
+ ```
10
+
11
+ ### Peer dependencies
12
+
13
+ The host application provides these:
14
+
15
+ ```bash
16
+ pnpm add @nestjs/common @nestjs/core @turystack/exceptions @turystack/nestjs-config drizzle-orm reflect-metadata uuidv7
17
+ ```
18
+
19
+ Optional — install only the ones whose feature you use:
20
+
21
+ ```bash
22
+ pnpm add pg
23
+ ```
24
+
25
+ ## Documentation
26
+
27
+ Options, API reference and examples:
28
+
29
+ **https://tury.dev/libs/nestjs-database**
30
+
31
+ ## Development
32
+
33
+ ```bash
34
+ pnpm install
35
+ pnpm typecheck
36
+ pnpm check
37
+ pnpm test
38
+ pnpm build
39
+ ```
@@ -0,0 +1,7 @@
1
+ export type AuditActorReader = () => string | undefined;
2
+ export declare function registerAuditActor(next: AuditActorReader | undefined): void;
3
+ export declare function currentAuditActor(): string | undefined;
4
+ export declare const CREATED_BY_COLUMN = "createdBy";
5
+ export declare const UPDATED_BY_COLUMN = "updatedBy";
6
+ export declare function withAuditActor(data: Record<string, unknown>, columns: Record<string, unknown>, column: string): Record<string, unknown>;
7
+ //# sourceMappingURL=audit.context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.context.d.ts","sourceRoot":"","sources":["../src/audit.context.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,gBAAgB,GAAG,MAAM,MAAM,GAAG,SAAS,CAAA;AAYvD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,GAAG,IAAI,CAE3E;AAGD,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAEtD;AAGD,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAG5C,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAS5C,wBAAgB,cAAc,CAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAezB"}
@@ -0,0 +1,23 @@
1
+ let reader;
2
+ export function registerAuditActor(next) {
3
+ reader = next;
4
+ }
5
+ export function currentAuditActor() {
6
+ return reader?.();
7
+ }
8
+ export const CREATED_BY_COLUMN = 'createdBy';
9
+ export const UPDATED_BY_COLUMN = 'updatedBy';
10
+ export function withAuditActor(data, columns, column) {
11
+ if (!columns[column] || data[column] !== undefined) {
12
+ return data;
13
+ }
14
+ const actor = currentAuditActor();
15
+ if (!actor) {
16
+ return data;
17
+ }
18
+ return {
19
+ ...data,
20
+ [column]: actor,
21
+ };
22
+ }
23
+ //# sourceMappingURL=audit.context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.context.js","sourceRoot":"","sources":["../src/audit.context.ts"],"names":[],"mappings":"AAGA,IAAI,MAAoC,CAAA;AAUxC,MAAM,UAAU,kBAAkB,CAAC,IAAkC;IACpE,MAAM,GAAG,IAAI,CAAA;AACd,CAAC;AAGD,MAAM,UAAU,iBAAiB;IAChC,OAAO,MAAM,EAAE,EAAE,CAAA;AAClB,CAAC;AAGD,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAG5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAS5C,MAAM,UAAU,cAAc,CAC7B,IAA6B,EAC7B,OAAgC,EAChC,MAAc;IAEd,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;QACpD,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAA;IAEjC,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,OAAO;QACN,GAAG,IAAI;QACP,CAAC,MAAM,CAAC,EAAE,KAAK;KACf,CAAA;AACF,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { MaterializeSchema } from './drizzle/schema-builder.drizzle.js';
2
+ import type { PgSchemaBuilder, RelationsHelpers, RelationsResolverResult, SchemaResolverResult } from './drizzle/schema-builder.types.drizzle.js';
3
+ export declare function defineDatabaseSchema<TResult extends SchemaResolverResult>(resolver: (schema: PgSchemaBuilder) => TResult): (schema: PgSchemaBuilder) => TResult;
4
+ export declare function defineDatabaseRelations<TSchemaResolver extends (schema: PgSchemaBuilder) => SchemaResolverResult, TRelations extends RelationsResolverResult>(_schemaResolver: TSchemaResolver, resolver: (tables: MaterializeSchema<ReturnType<TSchemaResolver>>, helpers: RelationsHelpers) => TRelations): (tables: MaterializeSchema<ReturnType<TSchemaResolver>>, helpers: RelationsHelpers) => TRelations;
5
+ //# sourceMappingURL=database.helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.helpers.d.ts","sourceRoot":"","sources":["../src/database.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AAC5E,OAAO,KAAK,EACX,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,MAAM,2CAA2C,CAAA;AAkBlD,wBAAgB,oBAAoB,CAAC,OAAO,SAAS,oBAAoB,EACxE,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,GAC5C,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAEtC;AAkBD,wBAAgB,uBAAuB,CACtC,eAAe,SAAS,CAAC,MAAM,EAAE,eAAe,KAAK,oBAAoB,EACzE,UAAU,SAAS,uBAAuB,EAE1C,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,CACT,MAAM,EAAE,iBAAiB,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EACtD,OAAO,EAAE,gBAAgB,KACrB,UAAU,GACb,CACF,MAAM,EAAE,iBAAiB,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EACtD,OAAO,EAAE,gBAAgB,KACrB,UAAU,CAEd"}
@@ -0,0 +1,7 @@
1
+ export function defineDatabaseSchema(resolver) {
2
+ return resolver;
3
+ }
4
+ export function defineDatabaseRelations(_schemaResolver, resolver) {
5
+ return resolver;
6
+ }
7
+ //# sourceMappingURL=database.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.helpers.js","sourceRoot":"","sources":["../src/database.helpers.ts"],"names":[],"mappings":"AAwBA,MAAM,UAAU,oBAAoB,CACnC,QAA8C;IAE9C,OAAO,QAAQ,CAAA;AAChB,CAAC;AAkBD,MAAM,UAAU,uBAAuB,CAItC,eAAgC,EAChC,QAGe;IAKf,OAAO,QAAQ,CAAA;AAChB,CAAC"}
@@ -1,8 +1,10 @@
1
1
  import { type DynamicModule } from '@nestjs/common';
2
+ import { ConfigService } from '@turystack/nestjs-config';
2
3
  import type { DatabaseModuleOptions } from './database.types.js';
3
4
  import type { RelationsResolverResult, SchemaResolverResult } from './drizzle/schema-builder.types.drizzle.js';
4
5
  export declare class DatabaseModule {
5
- static register<TResult extends SchemaResolverResult, TRelations extends RelationsResolverResult | undefined = undefined>(options: DatabaseModuleOptions<TResult, TRelations>): DynamicModule;
6
+ static register<TResult extends SchemaResolverResult, TRelations extends RelationsResolverResult | undefined = undefined>(options: DatabaseModuleOptions<TResult, TRelations> | ((config: ConfigService) => DatabaseModuleOptions<TResult, TRelations>)): DynamicModule;
7
+ private static _resolveOptions;
6
8
  private static _resolveProviders;
7
9
  }
8
10
  //# sourceMappingURL=database.module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.module.d.ts","sourceRoot":"","sources":["../src/database.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAyB,MAAM,gBAAgB,CAAA;AAM1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAOhE,OAAO,KAAK,EACX,uBAAuB,EACvB,oBAAoB,EACpB,MAAM,2CAA2C,CAAA;AAGlD,qBACa,cAAc;IAC1B,MAAM,CAAC,QAAQ,CACd,OAAO,SAAS,oBAAoB,EACpC,UAAU,SAAS,uBAAuB,GAAG,SAAS,GAAG,SAAS,EACjE,OAAO,EAAE,qBAAqB,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,aAAa;IAQrE,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAqChC"}
1
+ {"version":3,"file":"database.module.d.ts","sourceRoot":"","sources":["../src/database.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAyB,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAKxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAOhE,OAAO,KAAK,EACX,uBAAuB,EACvB,oBAAoB,EACpB,MAAM,2CAA2C,CAAA;AAGlD,qBACa,cAAc;IAC1B,MAAM,CAAC,QAAQ,CACd,OAAO,SAAS,oBAAoB,EACpC,UAAU,SAAS,uBAAuB,GAAG,SAAS,GAAG,SAAS,EAElE,OAAO,EACJ,qBAAqB,CAAC,OAAO,EAAE,UAAU,CAAC,GAC1C,CAAC,CAAC,MAAM,EAAE,aAAa,KAAK,qBAAqB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,GACxE,aAAa,CAUf;IAED,OAAO,CAAC,MAAM,CAAC,eAAe;IAsB9B,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAuDhC"}
@@ -6,6 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  var DatabaseModule_1;
8
8
  import { Module } from '@nestjs/common';
9
+ import { ConfigService } from '@turystack/nestjs-config';
9
10
  import { relations as drizzleRelations } from 'drizzle-orm';
10
11
  import { DATABASE_SERVICE } from './database.constants.js';
11
12
  import { DatabaseService } from './database.service.js';
@@ -15,25 +16,52 @@ import { registerDb } from './drizzle/transaction-context.drizzle.js';
15
16
  let DatabaseModule = DatabaseModule_1 = class DatabaseModule {
16
17
  static register(options) {
17
18
  return {
18
- exports: [DatabaseService, DATABASE_SERVICE],
19
+ exports: [
20
+ DatabaseService,
21
+ DATABASE_SERVICE,
22
+ ],
23
+ global: true,
19
24
  module: DatabaseModule_1,
20
25
  providers: DatabaseModule_1._resolveProviders(options),
21
26
  };
22
27
  }
23
- static _resolveProviders(options) {
28
+ static _resolveOptions(options, config) {
29
+ if (typeof options !== 'function') {
30
+ return options;
31
+ }
32
+ if (!config) {
33
+ throw new Error('[DatabaseModule] register((config) => ...) requires ConfigModule (@turystack/nestjs-config) to be registered');
34
+ }
35
+ return options(config);
36
+ }
37
+ static _resolveProviders(optionsOrFactory) {
24
38
  return [
25
39
  {
40
+ inject: [
41
+ {
42
+ optional: true,
43
+ token: ConfigService,
44
+ },
45
+ ],
26
46
  provide: DatabaseService,
27
- useFactory: async () => {
47
+ useFactory: async (config) => {
48
+ const options = DatabaseModule_1._resolveOptions(optionsOrFactory, config);
28
49
  const tables = materializeSchema(options.schemaResolver(createSchemaBuilder()));
29
- let fullSchema = { ...tables };
50
+ let fullSchema = {
51
+ ...tables,
52
+ };
30
53
  if (options.relationsResolver) {
31
- const relationsResult = options.relationsResolver(tables, { relations: drizzleRelations });
32
- fullSchema = { ...tables, ...relationsResult };
54
+ const relationsResult = options.relationsResolver(tables, {
55
+ relations: drizzleRelations,
56
+ });
57
+ fullSchema = {
58
+ ...tables,
59
+ ...relationsResult,
60
+ };
33
61
  }
34
- const { db, strategy } = await createDrizzleClient(options, fullSchema);
62
+ const db = await createDrizzleClient(options, fullSchema);
35
63
  registerDb(db);
36
- return new DatabaseService(db, tables, strategy);
64
+ return new DatabaseService(db, tables);
37
65
  },
38
66
  },
39
67
  {
@@ -1 +1 @@
1
- {"version":3,"file":"database.module.js","sourceRoot":"","sources":["../src/database.module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAsB,MAAM,EAAiB,MAAM,gBAAgB,CAAA;AAE1E,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAGvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EACN,mBAAmB,EACnB,iBAAiB,GACjB,MAAM,qCAAqC,CAAA;AAK5C,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAA;AAG9D,IAAM,cAAc,sBAApB,MAAM,cAAc;IAC1B,MAAM,CAAC,QAAQ,CAGb,OAAmD;QACpD,OAAO;YACN,OAAO,EAAE,CAAC,eAAe,EAAE,gBAAgB,CAAC;YAC5C,MAAM,EAAE,gBAAc;YACtB,SAAS,EAAE,gBAAc,CAAC,iBAAiB,CAAC,OAAO,CAAC;SACpD,CAAA;IACF,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAG9B,OAAmD;QACpD,OAAO;YACN;gBACC,OAAO,EAAE,eAAe;gBACxB,UAAU,EAAE,KAAK,IAAI,EAAE;oBACtB,MAAM,MAAM,GAAG,iBAAiB,CAC/B,OAAO,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC,CAC7C,CAAA;oBAED,IAAI,UAAU,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAA;oBAEvD,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;wBAC/B,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAChD,MAAe,EACf,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAC/B,CAAA;wBACD,UAAU,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,eAAe,EAAE,CAAA;oBAC/C,CAAC;oBAED,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,MAAM,mBAAmB,CACjD,OAAgC,EAChC,UAAU,CACV,CAAA;oBACD,UAAU,CAAC,EAAE,CAAC,CAAA;oBAEd,OAAO,IAAI,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;gBACjD,CAAC;aACD;YACD;gBACC,OAAO,EAAE,gBAAgB;gBACzB,WAAW,EAAE,eAAe;aAC5B;SACD,CAAA;IACF,CAAC;CACD,CAAA;AAjDY,cAAc;IAD1B,MAAM,CAAC,EAAE,CAAC;GACE,cAAc,CAiD1B"}
1
+ {"version":3,"file":"database.module.js","sourceRoot":"","sources":["../src/database.module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAsB,MAAM,EAAiB,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAGvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EACN,mBAAmB,EACnB,iBAAiB,GACjB,MAAM,qCAAqC,CAAA;AAK5C,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAA;AAG9D,IAAM,cAAc,sBAApB,MAAM,cAAc;IACnB,AAAP,MAAM,CAAC,QAAQ,CAId,OAE0E;QAE1E,OAAO;YACN,OAAO,EAAE;gBACR,eAAe;gBACf,gBAAgB;aAChB;YACD,MAAM,EAAE,IAAI;YACZ,MAAM,kBAAgB;YACtB,SAAS,EAAE,iBAAe,iBAAiB,CAAC,OAAO,CAAC;SACpD,CAAA;IACF,CAAC;IAEO,MAAM,CAAC,eAAe,CAI7B,OAE0E,EAC1E,MAAsB;QAEtB,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YACnC,OAAO,OAAO,CAAA;QACf,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACd,8GAA8G,CAC9G,CAAA;QACF,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC;IAEc,AAAP,MAAM,CAAC,iBAAiB,CAI/B,gBAE0E;QAE1E,OAAO;YACN;gBACC,MAAM,EAAE;oBACP;wBACC,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,aAAa;qBACpB;iBACD;gBACD,OAAO,EAAE,eAAe;gBACxB,UAAU,EAAE,KAAK,EAAE,MAAsB,EAAE,EAAE;oBAC5C,MAAM,OAAO,GAAG,iBAAe,eAAe,CAC7C,gBAAgB,EAChB,MAAM,CACN,CAAA;oBACD,MAAM,MAAM,GAAG,iBAAiB,CAC/B,OAAO,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC,CAC7C,CAAA;oBAED,IAAI,UAAU,GAA4B;wBACzC,GAAG,MAAM;qBACT,CAAA;oBAED,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;wBAC/B,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAe,EAAE;4BAClE,SAAS,EAAE,gBAAgB;yBAC3B,CAAC,CAAA;wBACF,UAAU,GAAG;4BACZ,GAAG,MAAM;4BACT,GAAG,eAAe;yBAClB,CAAA;oBACF,CAAC;oBAED,MAAM,EAAE,GAAG,MAAM,mBAAmB,CACnC,OAAgC,EAChC,UAAU,CACV,CAAA;oBACD,UAAU,CAAC,EAAE,CAAC,CAAA;oBAEd,OAAO,IAAI,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;gBACvC,CAAC;aACD;YACD;gBACC,OAAO,EAAE,gBAAgB;gBACzB,WAAW,EAAE,eAAe;aAC5B;SACD,CAAA;IACF,CAAC;CACD,CAAA;AAjGY,cAAc;IAD1B,MAAM,CAAC,EAAE,CAAC;GACE,cAAc,CAiG1B"}
@@ -1,10 +1,8 @@
1
1
  import type { Table } from 'drizzle-orm';
2
2
  import type { ResolvedDatabase, ResolvedRepositories } from './database.types.js';
3
- import type { AdapterStrategy } from './drizzle/client.drizzle.js';
4
3
  export declare class DatabaseService {
5
4
  private readonly _db;
6
- readonly _strategy: AdapterStrategy;
7
- constructor(db: unknown, schema: Record<string, Table>, strategy: AdapterStrategy);
5
+ constructor(db: unknown, schema: Record<string, Table>);
8
6
  get raw(): ResolvedDatabase;
9
7
  }
10
8
  export interface DatabaseService extends ResolvedRepositories {
@@ -1 +1 @@
1
- {"version":3,"file":"database.service.d.ts","sourceRoot":"","sources":["../src/database.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,KAAK,EACX,gBAAgB,EAChB,oBAAoB,EACpB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAIlE,qBACa,eAAe;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAA;gBAGlC,EAAE,EAAE,OAAO,EACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAC7B,QAAQ,EAAE,eAAe;IAc1B,IAAI,GAAG,IAAI,gBAAgB,CAE1B;CACD;AAGD,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;CAAG"}
1
+ {"version":3,"file":"database.service.d.ts","sourceRoot":"","sources":["../src/database.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,KAAK,EACX,gBAAgB,EAChB,oBAAoB,EACpB,MAAM,qBAAqB,CAAA;AAK5B,qBAEa,eAAe;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAE7B,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAerD;IAED,IAAI,GAAG,IAAI,gBAAgB,CAE1B;CACD;AAED,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;CAAG"}
@@ -12,11 +12,12 @@ import { getCurrentTx } from './drizzle/transaction-context.drizzle.js';
12
12
  import { TableRepository } from './repository/table-repository.js';
13
13
  let DatabaseService = class DatabaseService {
14
14
  _db;
15
- _strategy;
16
- constructor(db, schema, strategy) {
15
+ constructor(db, schema) {
17
16
  this._db = db;
18
- this._strategy = strategy;
19
17
  for (const [tableName, table] of Object.entries(schema)) {
18
+ if (tableName in this) {
19
+ throw new Error(`[DatabaseModule] table name "${tableName}" is reserved by DatabaseService`);
20
+ }
20
21
  ;
21
22
  this[tableName] = new TableRepository(() => this.raw, tableName, table);
22
23
  }
@@ -27,7 +28,7 @@ let DatabaseService = class DatabaseService {
27
28
  };
28
29
  DatabaseService = __decorate([
29
30
  Injectable(),
30
- __metadata("design:paramtypes", [Object, Object, Object])
31
+ __metadata("design:paramtypes", [Object, Object])
31
32
  ], DatabaseService);
32
33
  export { DatabaseService };
33
34
  //# sourceMappingURL=database.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.service.js","sourceRoot":"","sources":["../src/database.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAS3C,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAG3D,IAAM,eAAe,GAArB,MAAM,eAAe;IACV,GAAG,CAAS;IACpB,SAAS,CAAiB;IAEnC,YACC,EAAW,EACX,MAA6B,EAC7B,QAAyB;QAEzB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;QACb,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QAEzB,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACzD,CAAC;YAAC,IAAgC,CAAC,SAAS,CAAC,GAAG,IAAI,eAAe,CAClE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EACd,SAAS,EACT,KAAK,CACL,CAAA;QACF,CAAC;IACF,CAAC;IAED,IAAI,GAAG;QACN,OAAO,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,GAAG,CAAqB,CAAA;IACxD,CAAC;CACD,CAAA;AAxBY,eAAe;IAD3B,UAAU,EAAE;;GACA,eAAe,CAwB3B"}
1
+ {"version":3,"file":"database.service.js","sourceRoot":"","sources":["../src/database.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAQ3C,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAI3D,IAAM,eAAe,GAArB,MAAM,eAAe;IACV,GAAG,CAAS;IAE7B,YAAY,EAAW,EAAE,MAA6B;QACrD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;QAEb,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACzD,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CACd,gCAAgC,SAAS,kCAAkC,CAC3E,CAAA;YACF,CAAC;YACD,CAAC;YAAC,IAAgC,CAAC,SAAS,CAAC,GAAG,IAAI,eAAe,CAClE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EACd,SAAS,EACT,KAAK,CACL,CAAA;QACF,CAAC;IACF,CAAC;IAED,IAAI,GAAG;QACN,OAAO,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,GAAG,CAAqB,CAAA;IACxD,CAAC;CACD,CAAA;AAvBY,eAAe;IAF3B,UAAU,EAAE;;GAEA,eAAe,CAuB3B"}
@@ -0,0 +1,12 @@
1
+ import type { DatabaseModuleOptions } from '../database.types.js';
2
+ type AnyDb = any;
3
+ type AnyTx = any;
4
+ export interface AdapterStrategy {
5
+ runTransaction(db: AnyDb, fn: (tx: AnyTx) => Promise<unknown>, isolationLevel?: string): Promise<unknown>;
6
+ }
7
+ export declare function createDrizzleClient(options: DatabaseModuleOptions): {
8
+ db: AnyDb;
9
+ strategy: AdapterStrategy;
10
+ };
11
+ export {};
12
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/drizzle/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAGhE,KAAK,KAAK,GAAG,GAAG,CAAA;AAEhB,KAAK,KAAK,GAAG,GAAG,CAAA;AAEhB,MAAM,WAAW,eAAe;IAC9B,cAAc,CACZ,EAAE,EAAE,KAAK,EACT,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,EACnC,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,OAAO,CAAC,CAAA;CACpB;AAkCD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,GAAG;IACnE,EAAE,EAAE,KAAK,CAAA;IACT,QAAQ,EAAE,eAAe,CAAA;CAC1B,CAoBA"}
@@ -1,9 +1,3 @@
1
1
  import type { DatabaseModuleOptions } from '../database.types.js';
2
- export interface AdapterStrategy {
3
- runTransaction(db: unknown, fn: (tx: unknown) => Promise<unknown>, isolationLevel?: string): Promise<unknown>;
4
- }
5
- export declare function createDrizzleClient(options: DatabaseModuleOptions, schema: Record<string, unknown>): Promise<{
6
- db: unknown;
7
- strategy: AdapterStrategy;
8
- }>;
2
+ export declare function createDrizzleClient(options: DatabaseModuleOptions, schema: Record<string, unknown>): Promise<unknown>;
9
3
  //# sourceMappingURL=client.drizzle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.drizzle.d.ts","sourceRoot":"","sources":["../../src/drizzle/client.drizzle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAEhE,MAAM,WAAW,eAAe;IAC/B,cAAc,CACb,EAAE,EAAE,OAAO,EACX,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EACrC,cAAc,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC,CAAA;CACnB;AAoBD,wBAAsB,mBAAmB,CACxC,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC;IACV,EAAE,EAAE,OAAO,CAAA;IACX,QAAQ,EAAE,eAAe,CAAA;CACzB,CAAC,CAMD"}
1
+ {"version":3,"file":"client.drizzle.d.ts","sourceRoot":"","sources":["../../src/drizzle/client.drizzle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAEhE,wBAAsB,mBAAmB,CACxC,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,OAAO,CAAC,CAKlB"}
@@ -1,18 +1,7 @@
1
- class PostgresqlStrategy {
2
- async runTransaction(db, fn, isolationLevel) {
3
- const pgDb = db;
4
- return pgDb.transaction(fn, isolationLevel
5
- ? {
6
- isolationLevel,
7
- }
8
- : undefined);
9
- }
10
- }
11
1
  export async function createDrizzleClient(options, schema) {
12
2
  const { drizzle } = await import('drizzle-orm/node-postgres');
13
- return {
14
- db: drizzle(options.postgresql.url, { schema }),
15
- strategy: new PostgresqlStrategy(),
16
- };
3
+ return drizzle(options.postgresql.url, {
4
+ schema,
5
+ });
17
6
  }
18
7
  //# sourceMappingURL=client.drizzle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.drizzle.js","sourceRoot":"","sources":["../../src/drizzle/client.drizzle.ts"],"names":[],"mappings":"AAUA,MAAM,kBAAkB;IACvB,KAAK,CAAC,cAAc,CACnB,EAAW,EACX,EAAqC,EACrC,cAAuB;QAEvB,MAAM,IAAI,GAAG,EAAuH,CAAA;QACpI,OAAO,IAAI,CAAC,WAAW,CACtB,EAAE,EACF,cAAc;YACb,CAAC,CAAC;gBACA,cAAc;aACd;YACF,CAAC,CAAC,SAAS,CACZ,CAAA;IACF,CAAC;CACD;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,OAA8B,EAC9B,MAA+B;IAK/B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;IAC7D,OAAO;QACN,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC;QAC/C,QAAQ,EAAE,IAAI,kBAAkB,EAAE;KAClC,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"client.drizzle.js","sourceRoot":"","sources":["../../src/drizzle/client.drizzle.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,OAA8B,EAC9B,MAA+B;IAE/B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;IAC7D,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE;QACtC,MAAM;KACN,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,34 @@
1
+ class PostgresqlStrategy {
2
+ async runTransaction(db, fn, isolationLevel) {
3
+ return db.transaction(fn, isolationLevel ? { isolationLevel } : undefined);
4
+ }
5
+ }
6
+ class MysqlStrategy {
7
+ async runTransaction(db, fn, isolationLevel) {
8
+ return db.transaction(fn, isolationLevel ? { isolationLevel } : undefined);
9
+ }
10
+ }
11
+ class SqliteStrategy {
12
+ async runTransaction(db, fn, isolationLevel) {
13
+ const behavior = isolationLevel;
14
+ return db.transaction(fn, behavior ? { behavior } : undefined);
15
+ }
16
+ }
17
+ export function createDrizzleClient(options) {
18
+ switch (options.adapter) {
19
+ case 'postgresql': {
20
+ const { drizzle } = require('drizzle-orm/node-postgres');
21
+ return { db: drizzle(options.postgresql.url), strategy: new PostgresqlStrategy() };
22
+ }
23
+ case 'mysql': {
24
+ const { drizzle } = require('drizzle-orm/mysql2');
25
+ return { db: drizzle(options.mysql.url), strategy: new MysqlStrategy() };
26
+ }
27
+ case 'sqlite': {
28
+ const { drizzle } = require('drizzle-orm/better-sqlite3');
29
+ const Database = require('better-sqlite3');
30
+ return { db: drizzle(new Database(options.sqlite.url)), strategy: new SqliteStrategy() };
31
+ }
32
+ }
33
+ }
34
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/drizzle/client.ts"],"names":[],"mappings":"AAeA,MAAM,kBAAkB;IACtB,KAAK,CAAC,cAAc,CAClB,EAAS,EACT,EAAmC,EACnC,cAAuB;QAEvB,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC5E,CAAC;CACF;AAED,MAAM,aAAa;IACjB,KAAK,CAAC,cAAc,CAClB,EAAS,EACT,EAAmC,EACnC,cAAuB;QAEvB,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC5E,CAAC;CACF;AAED,MAAM,cAAc;IAClB,KAAK,CAAC,cAAc,CAClB,EAAS,EACT,EAAmC,EACnC,cAAuB;QAGvB,MAAM,QAAQ,GAAG,cAAoE,CAAA;QACrF,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAChE,CAAC;CACF;AAED,MAAM,UAAU,mBAAmB,CAAC,OAA8B;IAIhE,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,KAAK,YAAY,CAAC,CAAC,CAAC;YAElB,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,2BAA2B,CAAQ,CAAA;YAC/D,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,kBAAkB,EAAE,EAAE,CAAA;QACpF,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YAEb,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAQ,CAAA;YACxD,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,aAAa,EAAE,EAAE,CAAA;QAC1E,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YAEd,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,4BAA4B,CAAQ,CAAA;YAEhE,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAQ,CAAA;YACjD,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,cAAc,EAAE,EAAE,CAAA;QAC1F,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from '../drizzle/client.js';
2
+ export * from '../drizzle/transaction-context.js';
3
+ export * from '../drizzle/transactional.decorator.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drizzle/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,kCAAkC,CAAA;AAChD,cAAc,sCAAsC,CAAA"}
@@ -0,0 +1,4 @@
1
+ export * from '../drizzle/client.js';
2
+ export * from '../drizzle/transaction-context.js';
3
+ export * from '../drizzle/transactional.decorator.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drizzle/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,kCAAkC,CAAA;AAChD,cAAc,sCAAsC,CAAA"}
@@ -12,6 +12,6 @@ type MaterializePg<TResult extends SchemaResolverResult> = {
12
12
  };
13
13
  export type MaterializeSchema<TResult extends SchemaResolverResult> = MaterializePg<TResult>;
14
14
  export declare function materializeSchema<TResult extends SchemaResolverResult>(resolverResult: TResult): MaterializePg<TResult>;
15
- export type MaterializeSchemaWithRelations<TTableResult extends SchemaResolverResult, TRelationsResult extends RelationsResolverResult | undefined> = MaterializeSchema<TTableResult> & (TRelationsResult extends RelationsResolverResult ? TRelationsResult : Record<string, never>);
15
+ export type MaterializeSchemaWithRelations<TTableResult extends SchemaResolverResult, TRelationsResult extends RelationsResolverResult | undefined> = TRelationsResult extends RelationsResolverResult ? MaterializeSchema<TTableResult> & TRelationsResult : MaterializeSchema<TTableResult>;
16
16
  export {};
17
17
  //# sourceMappingURL=schema-builder.drizzle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-builder.drizzle.d.ts","sourceRoot":"","sources":["../../src/drizzle/schema-builder.drizzle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAA4B,MAAM,aAAa,CAAA;AACzE,OAAO,KAAK,EACX,mBAAmB,EACnB,kBAAkB,EAClB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,KAAK,EACX,SAAS,EACT,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,MAAM,2CAA2C,CAAA;AAUlD,wBAAgB,mBAAmB,IAAI,eAAe,CAGrD;AAYD,KAAK,aAAa,CAAC,OAAO,SAAS,oBAAoB,IAAI;KACzD,CAAC,IAAI,MAAM,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,GACjE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAC5C,kBAAkB,CAAC;QACnB,IAAI,EAAE,CAAC,CAAA;QACP,MAAM,EAAE,SAAS,CAAA;QACjB,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACjC,OAAO,EAAE,IAAI,CAAA;KACb,CAAC,GACD,KAAK,GACN,KAAK;CACR,CAAA;AAED,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,oBAAoB,IACjE,aAAa,CAAC,OAAO,CAAC,CAAA;AAEvB,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,oBAAoB,EACrE,cAAc,EAAE,OAAO,GACrB,aAAa,CAAC,OAAO,CAAC,CAAA;AAYzB,MAAM,MAAM,8BAA8B,CACzC,YAAY,SAAS,oBAAoB,EACzC,gBAAgB,SAAS,uBAAuB,GAAG,SAAS,IACzD,iBAAiB,CAAC,YAAY,CAAC,GAClC,CAAC,gBAAgB,SAAS,uBAAuB,GAC9C,gBAAgB,GAChB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"schema-builder.drizzle.d.ts","sourceRoot":"","sources":["../../src/drizzle/schema-builder.drizzle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAA4B,MAAM,aAAa,CAAA;AACzE,OAAO,KAAK,EACX,mBAAmB,EACnB,kBAAkB,EAClB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,KAAK,EACX,SAAS,EACT,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,MAAM,2CAA2C,CAAA;AAYlD,wBAAgB,mBAAmB,IAAI,eAAe,CAMrD;AAYD,KAAK,aAAa,CAAC,OAAO,SAAS,oBAAoB,IAAI;KACzD,CAAC,IAAI,MAAM,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,GACjE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAC5C,kBAAkB,CAAC;QACnB,IAAI,EAAE,CAAC,CAAA;QACP,MAAM,EAAE,SAAS,CAAA;QACjB,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACjC,OAAO,EAAE,IAAI,CAAA;KACb,CAAC,GACD,KAAK,GACN,KAAK;CACR,CAAA;AAED,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,oBAAoB,IACjE,aAAa,CAAC,OAAO,CAAC,CAAA;AAEvB,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,oBAAoB,EACrE,cAAc,EAAE,OAAO,GACrB,aAAa,CAAC,OAAO,CAAC,CAAA;AAYzB,MAAM,MAAM,8BAA8B,CACzC,YAAY,SAAS,oBAAoB,EACzC,gBAAgB,SAAS,uBAAuB,GAAG,SAAS,IACzD,gBAAgB,SAAS,uBAAuB,GACjD,iBAAiB,CAAC,YAAY,CAAC,GAAG,gBAAgB,GAClD,iBAAiB,CAAC,YAAY,CAAC,CAAA"}
@@ -1,12 +1,17 @@
1
1
  import * as pgCore from 'drizzle-orm/pg-core';
2
2
  const tableBuilder = {
3
3
  table(columns) {
4
- return { __columns: columns };
4
+ return {
5
+ __columns: columns,
6
+ };
5
7
  },
6
8
  };
7
9
  export function createSchemaBuilder() {
8
10
  const { pgTable: _pgTable, ...pgColumns } = pgCore;
9
- return { ...tableBuilder, ...pgColumns };
11
+ return {
12
+ ...tableBuilder,
13
+ ...pgColumns,
14
+ };
10
15
  }
11
16
  function createTable(tableName, columns) {
12
17
  return pgCore.pgTable(tableName, columns);
@@ -1 +1 @@
1
- {"version":3,"file":"schema-builder.drizzle.js","sourceRoot":"","sources":["../../src/drizzle/schema-builder.drizzle.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAS7C,MAAM,YAAY,GAAG;IACpB,KAAK,CACJ,OAAiB;QAEjB,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;IAC9B,CAAC;CACD,CAAA;AAED,MAAM,UAAU,mBAAmB;IAClC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,MAAM,CAAA;IAClD,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,SAAS,EAAqB,CAAA;AAC5D,CAAC;AAED,SAAS,WAAW,CACnB,SAAiB,EACjB,OAAgC;IAEhC,OAAO,MAAM,CAAC,OAAO,CACpB,SAAS,EACT,OAAqD,CACrD,CAAA;AACF,CAAC;AAqBD,MAAM,UAAU,iBAAiB,CAChC,cAAoC;IAEpC,OAAO,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC;QAC9D,SAAS;QACT,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC;KAC3C,CAAC,CACF,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"schema-builder.drizzle.js","sourceRoot":"","sources":["../../src/drizzle/schema-builder.drizzle.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAS7C,MAAM,YAAY,GAAG;IACpB,KAAK,CACJ,OAAiB;QAEjB,OAAO;YACN,SAAS,EAAE,OAAO;SAClB,CAAA;IACF,CAAC;CACD,CAAA;AAED,MAAM,UAAU,mBAAmB;IAClC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,MAAM,CAAA;IAClD,OAAO;QACN,GAAG,YAAY;QACf,GAAG,SAAS;KACO,CAAA;AACrB,CAAC;AAED,SAAS,WAAW,CACnB,SAAiB,EACjB,OAAgC;IAEhC,OAAO,MAAM,CAAC,OAAO,CACpB,SAAS,EACT,OAAqD,CACrD,CAAA;AACF,CAAC;AAqBD,MAAM,UAAU,iBAAiB,CAChC,cAAoC;IAEpC,OAAO,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC;QAC9D,SAAS;QACT,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC;KAC3C,CAAC,CACF,CAAA;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema-builder.types.drizzle.d.ts","sourceRoot":"","sources":["../../src/drizzle/schema-builder.types.drizzle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACpF,OAAO,KAAK,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAOlD,MAAM,MAAM,SAAS,CACpB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAC/C;IACH,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAA;CAC5B,CAAA;AAED,UAAU,kBAAkB;IAC3B,KAAK,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACvD,OAAO,EAAE,QAAQ,GACf,SAAS,CAAC,QAAQ,CAAC,CAAA;CACtB;AAGD,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAC/C,IAAI,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,CAAA;AAE/B,MAAM,MAAM,aAAa,GAAG,eAAe,CAAA;AAE3C,MAAM,MAAM,oBAAoB,GAAG,MAAM,CACxC,MAAM,EACN,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAC5C,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAC3C,MAAM,EACN,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAC3C,CAAA;AAED,MAAM,WAAW,gBAAgB;IAChC,SAAS,EAAE,OAAO,SAAS,CAAA;CAC3B"}
1
+ {"version":3,"file":"schema-builder.types.drizzle.d.ts","sourceRoot":"","sources":["../../src/drizzle/schema-builder.types.drizzle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,SAAS,EACT,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAOlD,MAAM,MAAM,SAAS,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI;IAC3E,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAA;CAC5B,CAAA;AAED,UAAU,kBAAkB;IAC3B,KAAK,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACvD,OAAO,EAAE,QAAQ,GACf,SAAS,CAAC,QAAQ,CAAC,CAAA;CACtB;AAGD,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAC/C,IAAI,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,CAAA;AAE/B,MAAM,MAAM,aAAa,GAAG,eAAe,CAAA;AAE3C,MAAM,MAAM,oBAAoB,GAAG,MAAM,CACxC,MAAM,EACN,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAC5C,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAC3C,MAAM,EACN,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAC3C,CAAA;AAED,MAAM,WAAW,gBAAgB;IAChC,SAAS,EAAE,OAAO,SAAS,CAAA;CAC3B"}
@@ -0,0 +1,9 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ type AnyTx = any;
3
+ type AnyDb = any;
4
+ export declare const transactionStorage: AsyncLocalStorage<any>;
5
+ export declare function getCurrentTx(): AnyTx | undefined;
6
+ export declare function registerDb(db: AnyDb): void;
7
+ export declare function getDb(): AnyDb;
8
+ export {};
9
+ //# sourceMappingURL=transaction-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-context.d.ts","sourceRoot":"","sources":["../../src/drizzle/transaction-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGpD,KAAK,KAAK,GAAG,GAAG,CAAA;AAEhB,KAAK,KAAK,GAAG,GAAG,CAAA;AAEhB,eAAO,MAAM,kBAAkB,wBAAiC,CAAA;AAEhE,wBAAgB,YAAY,IAAI,KAAK,GAAG,SAAS,CAEhD;AAID,wBAAgB,UAAU,CAAC,EAAE,EAAE,KAAK,GAAG,IAAI,CAE1C;AAED,wBAAgB,KAAK,IAAI,KAAK,CAG7B"}
@@ -2,6 +2,14 @@ import { AsyncLocalStorage } from 'node:async_hooks';
2
2
  import type { ResolvedDatabase } from '../database.types.js';
3
3
  export declare const transactionStorage: AsyncLocalStorage<unknown>;
4
4
  export declare function getCurrentTx(): ResolvedDatabase | undefined;
5
+ export type BeforeCommitHook = (tx: ResolvedDatabase) => Promise<void> | void;
6
+ export declare const beforeCommitStorage: AsyncLocalStorage<BeforeCommitHook[]>;
7
+ export declare function onBeforeCommit(hook: BeforeCommitHook): boolean;
8
+ export declare const transactionStateStorage: AsyncLocalStorage<Map<symbol, unknown>>;
9
+ export declare function transactionState<T>(key: symbol, create: () => T): T | undefined;
10
+ export type AfterCommitHook = () => Promise<void> | void;
11
+ export declare const afterCommitStorage: AsyncLocalStorage<AfterCommitHook[]>;
12
+ export declare function onAfterCommit(hook: AfterCommitHook): boolean;
5
13
  export declare function registerDb(db: ResolvedDatabase): void;
6
14
  export declare function getDb(): ResolvedDatabase;
7
15
  //# sourceMappingURL=transaction-context.drizzle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-context.drizzle.d.ts","sourceRoot":"","sources":["../../src/drizzle/transaction-context.drizzle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,eAAO,MAAM,kBAAkB,4BACW,CAAA;AAE1C,wBAAgB,YAAY,IAAI,gBAAgB,GAAG,SAAS,CAE3D;AAID,wBAAgB,UAAU,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI,CAErD;AAED,wBAAgB,KAAK,IAAI,gBAAgB,CAQxC"}
1
+ {"version":3,"file":"transaction-context.drizzle.d.ts","sourceRoot":"","sources":["../../src/drizzle/transaction-context.drizzle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,eAAO,MAAM,kBAAkB,4BAA4C,CAAA;AAE3E,wBAAgB,YAAY,IAAI,gBAAgB,GAAG,SAAS,CAE3D;AAGD,MAAM,MAAM,gBAAgB,GAAG,CAAC,EAAE,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;AAS7E,eAAO,MAAM,mBAAmB,uCAA8C,CAAA;AAa9E,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAU9D;AAGD,eAAO,MAAM,uBAAuB,yCAEjC,CAAA;AAYH,wBAAgB,gBAAgB,CAAC,CAAC,EACjC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,CAAC,GACb,CAAC,GAAG,SAAS,CAYf;AAGD,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;AAGxD,eAAO,MAAM,kBAAkB,sCAA6C,CAAA;AAY5E,wBAAgB,aAAa,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAU5D;AAID,wBAAgB,UAAU,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI,CAErD;AAED,wBAAgB,KAAK,IAAI,gBAAgB,CAQxC"}
@@ -3,6 +3,35 @@ export const transactionStorage = new AsyncLocalStorage();
3
3
  export function getCurrentTx() {
4
4
  return transactionStorage.getStore();
5
5
  }
6
+ export const beforeCommitStorage = new AsyncLocalStorage();
7
+ export function onBeforeCommit(hook) {
8
+ const hooks = beforeCommitStorage.getStore();
9
+ if (!hooks) {
10
+ return false;
11
+ }
12
+ hooks.push(hook);
13
+ return true;
14
+ }
15
+ export const transactionStateStorage = new AsyncLocalStorage();
16
+ export function transactionState(key, create) {
17
+ const state = transactionStateStorage.getStore();
18
+ if (!state) {
19
+ return undefined;
20
+ }
21
+ if (!state.has(key)) {
22
+ state.set(key, create());
23
+ }
24
+ return state.get(key);
25
+ }
26
+ export const afterCommitStorage = new AsyncLocalStorage();
27
+ export function onAfterCommit(hook) {
28
+ const hooks = afterCommitStorage.getStore();
29
+ if (!hooks) {
30
+ return false;
31
+ }
32
+ hooks.push(hook);
33
+ return true;
34
+ }
6
35
  let _db;
7
36
  export function registerDb(db) {
8
37
  _db = db;
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-context.drizzle.js","sourceRoot":"","sources":["../../src/drizzle/transaction-context.drizzle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAIpD,MAAM,CAAC,MAAM,kBAAkB,GAC9B,IAAI,iBAAiB,EAAoB,CAAA;AAE1C,MAAM,UAAU,YAAY;IAC3B,OAAO,kBAAkB,CAAC,QAAQ,EAAE,CAAA;AACrC,CAAC;AAED,IAAI,GAAiC,CAAA;AAErC,MAAM,UAAU,UAAU,CAAC,EAAoB;IAC9C,GAAG,GAAG,EAAE,CAAA;AACT,CAAC;AAED,MAAM,UAAU,KAAK;IACpB,IAAI,CAAC,GAAG,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACd,6EAA6E,CAC7E,CAAA;IACF,CAAC;IAED,OAAO,GAAG,CAAA;AACX,CAAC"}
1
+ {"version":3,"file":"transaction-context.drizzle.js","sourceRoot":"","sources":["../../src/drizzle/transaction-context.drizzle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAIpD,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,iBAAiB,EAAoB,CAAA;AAE3E,MAAM,UAAU,YAAY;IAC3B,OAAO,kBAAkB,CAAC,QAAQ,EAAE,CAAA;AACrC,CAAC;AAYD,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,iBAAiB,EAAsB,CAAA;AAa9E,MAAM,UAAU,cAAc,CAAC,IAAsB;IACpD,MAAM,KAAK,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAA;IAE5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,KAAK,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEhB,OAAO,IAAI,CAAA;AACZ,CAAC;AAGD,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,iBAAiB,EAEzD,CAAA;AAYH,MAAM,UAAU,gBAAgB,CAC/B,GAAW,EACX,MAAe;IAEf,MAAM,KAAK,GAAG,uBAAuB,CAAC,QAAQ,EAAE,CAAA;IAEhD,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,SAAS,CAAA;IACjB,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAA;IACzB,CAAC;IAED,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAM,CAAA;AAC3B,CAAC;AAMD,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,iBAAiB,EAAqB,CAAA;AAY5E,MAAM,UAAU,aAAa,CAAC,IAAqB;IAClD,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAA;IAE3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,KAAK,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEhB,OAAO,IAAI,CAAA;AACZ,CAAC;AAED,IAAI,GAAiC,CAAA;AAErC,MAAM,UAAU,UAAU,CAAC,EAAoB;IAC9C,GAAG,GAAG,EAAE,CAAA;AACT,CAAC;AAED,MAAM,UAAU,KAAK;IACpB,IAAI,CAAC,GAAG,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACd,6EAA6E,CAC7E,CAAA;IACF,CAAC;IAED,OAAO,GAAG,CAAA;AACX,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ export const transactionStorage = new AsyncLocalStorage();
3
+ export function getCurrentTx() {
4
+ return transactionStorage.getStore();
5
+ }
6
+ let _db;
7
+ export function registerDb(db) {
8
+ _db = db;
9
+ }
10
+ export function getDb() {
11
+ if (!_db)
12
+ throw new Error('[DatabaseModule] db not initialized — was DatabaseModule.register() called?');
13
+ return _db;
14
+ }
15
+ //# sourceMappingURL=transaction-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-context.js","sourceRoot":"","sources":["../../src/drizzle/transaction-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAOpD,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,iBAAiB,EAAS,CAAA;AAEhE,MAAM,UAAU,YAAY;IAC1B,OAAO,kBAAkB,CAAC,QAAQ,EAAE,CAAA;AACtC,CAAC;AAED,IAAI,GAAsB,CAAA;AAE1B,MAAM,UAAU,UAAU,CAAC,EAAS;IAClC,GAAG,GAAG,EAAE,CAAA;AACV,CAAC;AAED,MAAM,UAAU,KAAK;IACnB,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAA;IACxG,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type IsolationLevel = 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable' | 'deferred' | 'immediate' | 'exclusive';
2
+ export declare function Transactional(isolationLevel?: IsolationLevel): (_target: object, _propertyKey: string | symbol, descriptor: PropertyDescriptor) => PropertyDescriptor;
3
+ //# sourceMappingURL=transactional.decorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional.decorator.d.ts","sourceRoot":"","sources":["../../src/drizzle/transactional.decorator.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GACtB,kBAAkB,GAClB,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,GACd,UAAU,GACV,WAAW,GACX,WAAW,CAAA;AAEf,wBAAgB,aAAa,CAAC,cAAc,CAAC,EAAE,cAAc,IAEzD,SAAS,MAAM,EACf,cAAc,MAAM,GAAG,MAAM,EAC7B,YAAY,kBAAkB,KAC7B,kBAAkB,CAkBtB"}
@@ -0,0 +1,15 @@
1
+ import { getCurrentTx, getDb, transactionStorage } from '../drizzle/transaction-context.js';
2
+ export function Transactional(isolationLevel) {
3
+ return function (_target, _propertyKey, descriptor) {
4
+ const original = descriptor.value;
5
+ descriptor.value = async function (...args) {
6
+ if (getCurrentTx() !== undefined) {
7
+ return original.apply(this, args);
8
+ }
9
+ const db = getDb();
10
+ return db.transaction((tx) => transactionStorage.run(tx, () => original.apply(this, args)), isolationLevel ? { isolationLevel } : undefined);
11
+ };
12
+ return descriptor;
13
+ };
14
+ }
15
+ //# sourceMappingURL=transactional.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional.decorator.js","sourceRoot":"","sources":["../../src/drizzle/transactional.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAW1F,MAAM,UAAU,aAAa,CAAC,cAA+B;IAC3D,OAAO,UACL,OAAe,EACf,YAA6B,EAC7B,UAA8B;QAE9B,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAiD,CAAA;QAE7E,UAAU,CAAC,KAAK,GAAG,KAAK,WAA0B,GAAG,IAAe;YAClE,IAAI,YAAY,EAAE,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACnC,CAAC;YAED,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;YAElB,OAAO,EAAE,CAAC,WAAW,CACnB,CAAC,EAAW,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAC7E,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS,CAChD,CAAA;QACH,CAAC,CAAA;QAED,OAAO,UAAU,CAAA;IACnB,CAAC,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"transactional.drizzle.d.ts","sourceRoot":"","sources":["../../src/drizzle/transactional.drizzle.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,cAAc,GACvB,kBAAkB,GAClB,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,CAAA;AAEjB,wBAAgB,aAAa,CAAC,cAAc,CAAC,EAAE,cAAc,IAE3D,SAAS,MAAM,EACf,cAAc,MAAM,GAAG,MAAM,EAC7B,YAAY,kBAAkB,KAC5B,kBAAkB,CA8BrB"}
1
+ {"version":3,"file":"transactional.drizzle.d.ts","sourceRoot":"","sources":["../../src/drizzle/transactional.drizzle.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,cAAc,GACvB,kBAAkB,GAClB,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,CAAA;AAEjB,wBAAgB,aAAa,CAAC,cAAc,CAAC,EAAE,cAAc,aAElD,MAAM,gBACD,MAAM,GAAG,MAAM,cACjB,kBAAkB,KAC5B,kBAAkB,CAmErB"}