@turystack/nestjs-database 0.0.9 → 0.0.11

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 (39) hide show
  1. package/dist/database.module.d.ts +2 -2
  2. package/dist/database.module.d.ts.map +1 -1
  3. package/dist/database.module.js +9 -20
  4. package/dist/database.module.js.map +1 -1
  5. package/dist/database.service.d.ts +7 -4
  6. package/dist/database.service.d.ts.map +1 -1
  7. package/dist/database.service.js +7 -3
  8. package/dist/database.service.js.map +1 -1
  9. package/dist/database.types.d.ts +25 -32
  10. package/dist/database.types.d.ts.map +1 -1
  11. package/dist/drizzle/client.drizzle.d.ts.map +1 -1
  12. package/dist/drizzle/client.drizzle.js +5 -45
  13. package/dist/drizzle/client.drizzle.js.map +1 -1
  14. package/dist/drizzle/schema-builder.drizzle.d.ts +8 -31
  15. package/dist/drizzle/schema-builder.drizzle.d.ts.map +1 -1
  16. package/dist/drizzle/schema-builder.drizzle.js +7 -28
  17. package/dist/drizzle/schema-builder.drizzle.js.map +1 -1
  18. package/dist/drizzle/schema-builder.types.drizzle.d.ts +6 -6
  19. package/dist/drizzle/schema-builder.types.drizzle.d.ts.map +1 -1
  20. package/dist/drizzle/transactional.drizzle.d.ts +1 -1
  21. package/dist/drizzle/transactional.drizzle.d.ts.map +1 -1
  22. package/dist/drizzle/transactional.drizzle.js.map +1 -1
  23. package/dist/index.d.ts +10 -6
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +6 -4
  26. package/dist/index.js.map +1 -1
  27. package/dist/repository/table-repository.d.ts +58 -0
  28. package/dist/repository/table-repository.d.ts.map +1 -0
  29. package/dist/repository/table-repository.errors.d.ts +9 -0
  30. package/dist/repository/table-repository.errors.d.ts.map +1 -0
  31. package/dist/repository/table-repository.errors.js +15 -0
  32. package/dist/repository/table-repository.errors.js.map +1 -0
  33. package/dist/repository/table-repository.js +239 -0
  34. package/dist/repository/table-repository.js.map +1 -0
  35. package/dist/repository/table-repository.types.d.ts +111 -0
  36. package/dist/repository/table-repository.types.d.ts.map +1 -0
  37. package/dist/repository/table-repository.types.js +2 -0
  38. package/dist/repository/table-repository.types.js.map +1 -0
  39. package/package.json +6 -16
@@ -1,8 +1,8 @@
1
1
  import { type DynamicModule } from '@nestjs/common';
2
2
  import type { DatabaseModuleOptions } from './database.types.js';
3
- import type { SchemaResolverResult } from './drizzle/schema-builder.types.drizzle.js';
3
+ import type { RelationsResolverResult, SchemaResolverResult } from './drizzle/schema-builder.types.drizzle.js';
4
4
  export declare class DatabaseModule {
5
- static register<TResult extends SchemaResolverResult>(options: DatabaseModuleOptions<TResult>): DynamicModule;
5
+ static register<TResult extends SchemaResolverResult, TRelations extends RelationsResolverResult | undefined = undefined>(options: DatabaseModuleOptions<TResult, TRelations>): DynamicModule;
6
6
  private static _resolveProviders;
7
7
  }
8
8
  //# 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;AAI1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAOhE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAGrF,qBACa,cAAc;IAC1B,MAAM,CAAC,QAAQ,CAAC,OAAO,SAAS,oBAAoB,EACnD,OAAO,EAAE,qBAAqB,CAAC,OAAO,CAAC,GACrC,aAAa;IAWhB,OAAO,CAAC,MAAM,CAAC,iBAAiB;CA6ChC"}
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"}
@@ -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 { relations as drizzleRelations } from 'drizzle-orm';
9
10
  import { DATABASE_SERVICE } from './database.constants.js';
10
11
  import { DatabaseService } from './database.service.js';
11
12
  import { createDrizzleClient } from './drizzle/client.drizzle.js';
@@ -14,10 +15,7 @@ import { registerDb } from './drizzle/transaction-context.drizzle.js';
14
15
  let DatabaseModule = DatabaseModule_1 = class DatabaseModule {
15
16
  static register(options) {
16
17
  return {
17
- exports: [
18
- DatabaseService,
19
- DATABASE_SERVICE,
20
- ],
18
+ exports: [DatabaseService, DATABASE_SERVICE],
21
19
  module: DatabaseModule_1,
22
20
  providers: DatabaseModule_1._resolveProviders(options),
23
21
  };
@@ -27,24 +25,15 @@ let DatabaseModule = DatabaseModule_1 = class DatabaseModule {
27
25
  {
28
26
  provide: DatabaseService,
29
27
  useFactory: async () => {
30
- let schema;
31
- switch (options.adapter) {
32
- case 'postgresql': {
33
- schema = materializeSchema('postgresql', options.schemaResolver(createSchemaBuilder('postgresql')));
34
- break;
35
- }
36
- case 'mysql': {
37
- schema = materializeSchema('mysql', options.schemaResolver(createSchemaBuilder('mysql')));
38
- break;
39
- }
40
- case 'sqlite': {
41
- schema = materializeSchema('sqlite', options.schemaResolver(createSchemaBuilder('sqlite')));
42
- break;
43
- }
28
+ const tables = materializeSchema(options.schemaResolver(createSchemaBuilder()));
29
+ let fullSchema = { ...tables };
30
+ if (options.relationsResolver) {
31
+ const relationsResult = options.relationsResolver(tables, { relations: drizzleRelations });
32
+ fullSchema = { ...tables, ...relationsResult };
44
33
  }
45
- const { db, strategy } = await createDrizzleClient(options, schema);
34
+ const { db, strategy } = await createDrizzleClient(options, fullSchema);
46
35
  registerDb(db);
47
- return new DatabaseService(db, schema, strategy);
36
+ return new DatabaseService(db, tables, strategy);
48
37
  },
49
38
  },
50
39
  {
@@ -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,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;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAA;AAG9D,IAAM,cAAc,sBAApB,MAAM,cAAc;IAC1B,MAAM,CAAC,QAAQ,CACd,OAAuC;QAEvC,OAAO;YACN,OAAO,EAAE;gBACR,eAAe;gBACf,gBAAgB;aAChB;YACD,MAAM,EAAE,gBAAc;YACtB,SAAS,EAAE,gBAAc,CAAC,iBAAiB,CAAC,OAAO,CAAC;SACpD,CAAA;IACF,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAC/B,OAAuC;QAEvC,OAAO;YACN;gBACC,OAAO,EAAE,eAAe;gBACxB,UAAU,EAAE,KAAK,IAAI,EAAE;oBACtB,IAAI,MAA+B,CAAA;oBAEnC,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC;wBACzB,KAAK,YAAY,CAAC,CAAC,CAAC;4BACnB,MAAM,GAAG,iBAAiB,CACzB,YAAY,EACZ,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CACzD,CAAA;4BACD,MAAK;wBACN,CAAC;wBACD,KAAK,OAAO,CAAC,CAAC,CAAC;4BACd,MAAM,GAAG,iBAAiB,CACzB,OAAO,EACP,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CACpD,CAAA;4BACD,MAAK;wBACN,CAAC;wBACD,KAAK,QAAQ,CAAC,CAAC,CAAC;4BACf,MAAM,GAAG,iBAAiB,CACzB,QAAQ,EACR,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CACrD,CAAA;4BACD,MAAK;wBACN,CAAC;oBACF,CAAC;oBAED,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;oBACnE,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;AA3DY,cAAc;IAD1B,MAAM,CAAC,EAAE,CAAC;GACE,cAAc,CA2D1B"}
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,9 +1,12 @@
1
- import type { ResolvedDatabase } from './database.types.js';
1
+ import type { Table } from 'drizzle-orm';
2
+ import type { ResolvedDatabase, ResolvedRepositories } from './database.types.js';
2
3
  import type { AdapterStrategy } from './drizzle/client.drizzle.js';
3
- export declare class DatabaseService<TSchema extends Record<string, unknown> = Record<string, unknown>> {
4
+ export declare class DatabaseService {
4
5
  private readonly _db;
5
6
  readonly _strategy: AdapterStrategy;
6
- constructor(db: ResolvedDatabase, schema: TSchema, strategy: AdapterStrategy);
7
- get db(): ResolvedDatabase;
7
+ constructor(db: unknown, schema: Record<string, Table>, strategy: AdapterStrategy);
8
+ get raw(): ResolvedDatabase;
9
+ }
10
+ export interface DatabaseService extends ResolvedRepositories {
8
11
  }
9
12
  //# sourceMappingURL=database.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.service.d.ts","sourceRoot":"","sources":["../src/database.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AA0BlE,qBACa,eAAe,CAC3B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEjE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAA;gBAGlC,EAAE,EAAE,gBAAgB,EACpB,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,eAAe;IAW1B,IAAI,EAAE,IAAI,gBAAgB,CAEzB;CACD"}
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"}
@@ -9,16 +9,20 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  };
10
10
  import { Injectable } from '@nestjs/common';
11
11
  import { getCurrentTx } from './drizzle/transaction-context.drizzle.js';
12
+ import { TableRepository } from './repository/table-repository.js';
12
13
  let DatabaseService = class DatabaseService {
13
14
  _db;
14
15
  _strategy;
15
16
  constructor(db, schema, strategy) {
16
17
  this._db = db;
17
18
  this._strategy = strategy;
18
- Object.assign(this, schema);
19
+ for (const [tableName, table] of Object.entries(schema)) {
20
+ ;
21
+ this[tableName] = new TableRepository(() => this.raw, tableName, table);
22
+ }
19
23
  }
20
- get db() {
21
- return getCurrentTx() ?? this._db;
24
+ get raw() {
25
+ return (getCurrentTx() ?? this._db);
22
26
  }
23
27
  };
24
28
  DatabaseService = __decorate([
@@ -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;AAI3C,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAA;AA0BhE,IAAM,eAAe,GAArB,MAAM,eAAe;IAGV,GAAG,CAAkB;IAC7B,SAAS,CAAiB;IAEnC,YACC,EAAoB,EACpB,MAAe,EACf,QAAyB;QAEzB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;QACb,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QACzB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC5B,CAAC;IAMD,IAAI,EAAE;QACL,OAAO,YAAY,EAAE,IAAI,IAAI,CAAC,GAAG,CAAA;IAClC,CAAC;CACD,CAAA;AAvBY,eAAe;IAD3B,UAAU,EAAE;;GACA,eAAe,CAuB3B"}
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,41 +1,34 @@
1
+ import type { Table } from 'drizzle-orm';
1
2
  import type { NodePgDatabase } from 'drizzle-orm/node-postgres';
2
- import type { MySql2Database } from 'drizzle-orm/mysql2';
3
- import type { BetterSQLite3Database } from 'drizzle-orm/better-sqlite3';
4
- import type { MysqlSchemaBuilder, PgSchemaBuilder, SchemaResolverResult, SqliteSchemaBuilder } from './drizzle/schema-builder.types.drizzle.js';
5
- import type { MaterializeSchema } from './drizzle/schema-builder.drizzle.js';
6
- export type DatabaseAdapter = 'postgresql' | 'mysql' | 'sqlite';
7
- export type DatabaseModuleOptions<TResult extends SchemaResolverResult = SchemaResolverResult> = {
3
+ import type { MaterializeSchema, MaterializeSchemaWithRelations } from './drizzle/schema-builder.drizzle.js';
4
+ import type { PgSchemaBuilder, RelationsHelpers, RelationsResolverResult, SchemaResolverResult } from './drizzle/schema-builder.types.drizzle.js';
5
+ import type { InferRepositories } from './repository/table-repository.types.js';
6
+ export type DatabaseOptions = {
7
+ url: string;
8
+ };
9
+ export type DatabaseModuleOptions<TResult extends SchemaResolverResult = SchemaResolverResult, TRelations extends RelationsResolverResult | undefined = undefined> = {
8
10
  adapter: 'postgresql';
9
- postgresql: {
10
- url: string;
11
- };
11
+ postgresql: DatabaseOptions;
12
12
  schemaResolver: (schema: PgSchemaBuilder) => TResult;
13
- } | {
14
- adapter: 'mysql';
15
- mysql: {
16
- url: string;
17
- };
18
- schemaResolver: (schema: MysqlSchemaBuilder) => TResult;
19
- } | {
20
- adapter: 'sqlite';
21
- sqlite: {
22
- url: string;
23
- };
24
- schemaResolver: (schema: SqliteSchemaBuilder) => TResult;
13
+ relationsResolver?: (tables: MaterializeSchema<TResult>, helpers: RelationsHelpers) => TRelations & RelationsResolverResult;
25
14
  };
26
15
  export interface DatabaseServiceRegistry {
27
16
  }
28
17
  export type ResolvedDatabase = DatabaseServiceRegistry extends {
29
- db: infer TDb;
18
+ raw: infer TDb;
30
19
  } ? TDb : unknown;
31
- export type InferDatabase<T extends DatabaseModuleOptions> = T extends {
32
- adapter: 'postgresql';
33
- schemaResolver: (schema: PgSchemaBuilder) => infer R;
34
- } ? R extends SchemaResolverResult ? NodePgDatabase<MaterializeSchema<'postgresql', R>> : never : T extends {
35
- adapter: 'mysql';
36
- schemaResolver: (schema: MysqlSchemaBuilder) => infer R;
37
- } ? R extends SchemaResolverResult ? MySql2Database<MaterializeSchema<'mysql', R>> : never : T extends {
38
- adapter: 'sqlite';
39
- schemaResolver: (schema: SqliteSchemaBuilder) => infer R;
40
- } ? R extends SchemaResolverResult ? BetterSQLite3Database<MaterializeSchema<'sqlite', R>> : never : never;
20
+ export type ResolvedSchema = DatabaseServiceRegistry extends {
21
+ schema: infer TSchema extends Record<string, Table>;
22
+ } ? TSchema : Record<string, Table>;
23
+ export type ResolvedRepositories = DatabaseServiceRegistry extends {
24
+ raw: infer TDb;
25
+ schema: infer TSchema extends Record<string, Table>;
26
+ } ? InferRepositories<TDb, TSchema> : {};
27
+ export type InferDatabase<TSchema extends SchemaResolverResult, TRelations extends RelationsResolverResult | undefined = undefined> = NodePgDatabase<MaterializeSchemaWithRelations<TSchema, TRelations>>;
28
+ export type InferDatabaseConfig<TSchemaResult extends SchemaResolverResult, TRelationsResult extends RelationsResolverResult | undefined = undefined> = {
29
+ raw: InferDatabase<TSchemaResult, TRelationsResult>;
30
+ schema: MaterializeSchema<TSchemaResult>;
31
+ };
32
+ export type DatabaseSchemaResolver = (schema: PgSchemaBuilder) => SchemaResolverResult;
33
+ export type DatabaseRelationsResolver<TSchemaResult extends SchemaResolverResult> = (tables: MaterializeSchema<TSchemaResult>, helpers: RelationsHelpers) => RelationsResolverResult;
41
34
  //# sourceMappingURL=database.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.types.d.ts","sourceRoot":"","sources":["../src/database.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAEvE,OAAO,KAAK,EACX,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,MAAM,2CAA2C,CAAA;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AAG5E,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAA;AAuB/D,MAAM,MAAM,qBAAqB,CAChC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,IAEzD;IACA,OAAO,EAAE,YAAY,CAAA;IACrB,UAAU,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3B,cAAc,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAA;CACnD,GACD;IACA,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IACtB,cAAc,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAA;CACtD,GACD;IACA,OAAO,EAAE,QAAQ,CAAA;IACjB,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IACvB,cAAc,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,OAAO,CAAA;CACvD,CAAA;AAmBJ,MAAM,WAAW,uBAAuB;CAAG;AAG3C,MAAM,MAAM,gBAAgB,GAC3B,uBAAuB,SAAS;IAAE,EAAE,EAAE,MAAM,GAAG,CAAA;CAAE,GAAG,GAAG,GAAG,OAAO,CAAA;AAQlE,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,qBAAqB,IACxD,CAAC,SAAS;IACT,OAAO,EAAE,YAAY,CAAA;IACrB,cAAc,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,MAAM,CAAC,CAAA;CACpD,GACE,CAAC,SAAS,oBAAoB,GAC7B,cAAc,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,GAClD,KAAK,GACN,CAAC,SAAS;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,MAAM,CAAC,CAAA;CACvD,GACA,CAAC,SAAS,oBAAoB,GAC7B,cAAc,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAC7C,KAAK,GACN,CAAC,SAAS;IACT,OAAO,EAAE,QAAQ,CAAA;IACjB,cAAc,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,MAAM,CAAC,CAAA;CACxD,GACA,CAAC,SAAS,oBAAoB,GAC7B,qBAAqB,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GACrD,KAAK,GACN,KAAK,CAAA"}
1
+ {"version":3,"file":"database.types.d.ts","sourceRoot":"","sources":["../src/database.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE/D,OAAO,KAAK,EACX,iBAAiB,EACjB,8BAA8B,EAC9B,MAAM,qCAAqC,CAAA;AAC5C,OAAO,KAAK,EACX,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,MAAM,2CAA2C,CAAA;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAE/E,MAAM,MAAM,eAAe,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAA;CACX,CAAA;AASD,MAAM,MAAM,qBAAqB,CAChC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,EAC3D,UAAU,SAAS,uBAAuB,GAAG,SAAS,GAAG,SAAS,IAC/D;IACH,OAAO,EAAE,YAAY,CAAA;IACrB,UAAU,EAAE,eAAe,CAAA;IAC3B,cAAc,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAA;IACpD,iBAAiB,CAAC,EAAE,CACnB,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAClC,OAAO,EAAE,gBAAgB,KACrB,UAAU,GAAG,uBAAuB,CAAA;CACzC,CAAA;AAqBD,MAAM,WAAW,uBAAuB;CAAG;AAG3C,MAAM,MAAM,gBAAgB,GAAG,uBAAuB,SAAS;IAC9D,GAAG,EAAE,MAAM,GAAG,CAAA;CACd,GACE,GAAG,GACH,OAAO,CAAA;AAGV,MAAM,MAAM,cAAc,GAAG,uBAAuB,SAAS;IAC5D,MAAM,EAAE,MAAM,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CACnD,GACE,OAAO,GACP,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AAGxB,MAAM,MAAM,oBAAoB,GAAG,uBAAuB,SAAS;IAClE,GAAG,EAAE,MAAM,GAAG,CAAA;IACd,MAAM,EAAE,MAAM,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CACnD,GACE,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,GAC/B,EAAE,CAAA;AAKL,MAAM,MAAM,aAAa,CACxB,OAAO,SAAS,oBAAoB,EACpC,UAAU,SAAS,uBAAuB,GAAG,SAAS,GAAG,SAAS,IAC/D,cAAc,CAAC,8BAA8B,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;AAkBvE,MAAM,MAAM,mBAAmB,CAC9B,aAAa,SAAS,oBAAoB,EAC1C,gBAAgB,SAAS,uBAAuB,GAAG,SAAS,GAAG,SAAS,IACrE;IACH,GAAG,EAAE,aAAa,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAA;IACnD,MAAM,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAA;CACxC,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,CACpC,MAAM,EAAE,eAAe,KACnB,oBAAoB,CAAA;AAEzB,MAAM,MAAM,yBAAyB,CACpC,aAAa,SAAS,oBAAoB,IACvC,CACH,MAAM,EAAE,iBAAiB,CAAC,aAAa,CAAC,EACxC,OAAO,EAAE,gBAAgB,KACrB,uBAAuB,CAAA"}
@@ -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;AA6DD,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,CAyBD"}
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"}
@@ -8,51 +8,11 @@ class PostgresqlStrategy {
8
8
  : undefined);
9
9
  }
10
10
  }
11
- class MysqlStrategy {
12
- async runTransaction(db, fn, isolationLevel) {
13
- const mysqlDb = db;
14
- return mysqlDb.transaction(fn, isolationLevel
15
- ? {
16
- isolationLevel,
17
- }
18
- : undefined);
19
- }
20
- }
21
- class SqliteStrategy {
22
- async runTransaction(db, fn, isolationLevel) {
23
- const sqliteDb = db;
24
- const behavior = isolationLevel;
25
- return sqliteDb.transaction(fn, behavior
26
- ? {
27
- behavior,
28
- }
29
- : undefined);
30
- }
31
- }
32
11
  export async function createDrizzleClient(options, schema) {
33
- switch (options.adapter) {
34
- case 'postgresql': {
35
- const { drizzle } = await import('drizzle-orm/node-postgres');
36
- return {
37
- db: drizzle(options.postgresql.url, { schema }),
38
- strategy: new PostgresqlStrategy(),
39
- };
40
- }
41
- case 'mysql': {
42
- const { drizzle } = await import('drizzle-orm/mysql2');
43
- return {
44
- db: drizzle(options.mysql.url, { schema, mode: 'default' }),
45
- strategy: new MysqlStrategy(),
46
- };
47
- }
48
- case 'sqlite': {
49
- const { drizzle } = await import('drizzle-orm/better-sqlite3');
50
- const Database = (await import('better-sqlite3')).default;
51
- return {
52
- db: drizzle(new Database(options.sqlite.url), { schema }),
53
- strategy: new SqliteStrategy(),
54
- };
55
- }
56
- }
12
+ const { drizzle } = await import('drizzle-orm/node-postgres');
13
+ return {
14
+ db: drizzle(options.postgresql.url, { schema }),
15
+ strategy: new PostgresqlStrategy(),
16
+ };
57
17
  }
58
18
  //# 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,aAAa;IAClB,KAAK,CAAC,cAAc,CACnB,EAAW,EACX,EAAqC,EACrC,cAAuB;QAEvB,MAAM,OAAO,GAAG,EAAuH,CAAA;QACvI,OAAO,OAAO,CAAC,WAAW,CACzB,EAAE,EACF,cAAc;YACb,CAAC,CAAC;gBACA,cAAc;aACd;YACF,CAAC,CAAC,SAAS,CACZ,CAAA;IACF,CAAC;CACD;AAED,MAAM,cAAc;IACnB,KAAK,CAAC,cAAc,CACnB,EAAW,EACX,EAAqC,EACrC,cAAuB;QAEvB,MAAM,QAAQ,GAAG,EAAiH,CAAA;QAClI,MAAM,QAAQ,GAAG,cAIL,CAAA;QACZ,OAAO,QAAQ,CAAC,WAAW,CAC1B,EAAE,EACF,QAAQ;YACP,CAAC,CAAC;gBACA,QAAQ;aACR;YACF,CAAC,CAAC,SAAS,CACZ,CAAA;IACF,CAAC;CACD;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,OAA8B,EAC9B,MAA+B;IAK/B,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC;QACzB,KAAK,YAAY,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;YAC7D,OAAO;gBACN,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC;gBAC/C,QAAQ,EAAE,IAAI,kBAAkB,EAAE;aAClC,CAAA;QACF,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAA;YACtD,OAAO;gBACN,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;gBAC3D,QAAQ,EAAE,IAAI,aAAa,EAAE;aAC7B,CAAA;QACF,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACf,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAA;YAC9D,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAA;YACzD,OAAO;gBACN,EAAE,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC;gBACzD,QAAQ,EAAE,IAAI,cAAc,EAAE;aAC9B,CAAA;QACF,CAAC;IACF,CAAC;AACF,CAAC"}
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,40 +1,17 @@
1
1
  import type { BuildColumns } from 'drizzle-orm';
2
2
  import type { PgColumnBuilderBase, PgTableWithColumns } from 'drizzle-orm/pg-core';
3
- import type { MySqlColumnBuilderBase, MySqlTableWithColumns } from 'drizzle-orm/mysql-core';
4
- import type { SQLiteColumnBuilderBase, SQLiteTableWithColumns } from 'drizzle-orm/sqlite-core';
5
- import type { DatabaseAdapter } from '../database.types.js';
6
- import type { ColumnMap, MysqlSchemaBuilder, PgSchemaBuilder, SchemaResolverResult, SqliteSchemaBuilder } from '../drizzle/schema-builder.types.drizzle.js';
7
- export declare function createSchemaBuilder(adapter: 'postgresql'): PgSchemaBuilder;
8
- export declare function createSchemaBuilder(adapter: 'mysql'): MysqlSchemaBuilder;
9
- export declare function createSchemaBuilder(adapter: 'sqlite'): SqliteSchemaBuilder;
10
- export declare function createSchemaBuilder(adapter: DatabaseAdapter): PgSchemaBuilder | MysqlSchemaBuilder | SqliteSchemaBuilder;
3
+ import type { ColumnMap, PgSchemaBuilder, RelationsResolverResult, SchemaResolverResult } from '../drizzle/schema-builder.types.drizzle.js';
4
+ export declare function createSchemaBuilder(): PgSchemaBuilder;
11
5
  type MaterializePg<TResult extends SchemaResolverResult> = {
12
- [K in keyof TResult & string]: TResult[K] extends ColumnMap<infer C> ? PgTableWithColumns<{
6
+ [K in keyof TResult & string]: TResult[K] extends ColumnMap<infer C> ? C extends Record<string, PgColumnBuilderBase> ? PgTableWithColumns<{
13
7
  name: K;
14
8
  schema: undefined;
15
- columns: BuildColumns<K, C & Record<string, PgColumnBuilderBase>, 'pg'>;
9
+ columns: BuildColumns<K, C, 'pg'>;
16
10
  dialect: 'pg';
17
- }> : never;
11
+ }> : never : never;
18
12
  };
19
- type MaterializeMysql<TResult extends SchemaResolverResult> = {
20
- [K in keyof TResult & string]: TResult[K] extends ColumnMap<infer C> ? MySqlTableWithColumns<{
21
- name: K;
22
- schema: undefined;
23
- columns: BuildColumns<K, C & Record<string, MySqlColumnBuilderBase>, 'mysql'>;
24
- dialect: 'mysql';
25
- }> : never;
26
- };
27
- type MaterializeSqlite<TResult extends SchemaResolverResult> = {
28
- [K in keyof TResult & string]: TResult[K] extends ColumnMap<infer C> ? SQLiteTableWithColumns<{
29
- name: K;
30
- schema: undefined;
31
- columns: BuildColumns<K, C & Record<string, SQLiteColumnBuilderBase>, 'sqlite'>;
32
- dialect: 'sqlite';
33
- }> : never;
34
- };
35
- export type MaterializeSchema<TAdapter extends DatabaseAdapter, TResult extends SchemaResolverResult> = TAdapter extends 'postgresql' ? MaterializePg<TResult> : TAdapter extends 'mysql' ? MaterializeMysql<TResult> : TAdapter extends 'sqlite' ? MaterializeSqlite<TResult> : never;
36
- export declare function materializeSchema<TResult extends SchemaResolverResult>(adapter: 'postgresql', resolverResult: TResult): MaterializePg<TResult>;
37
- export declare function materializeSchema<TResult extends SchemaResolverResult>(adapter: 'mysql', resolverResult: TResult): MaterializeMysql<TResult>;
38
- export declare function materializeSchema<TResult extends SchemaResolverResult>(adapter: 'sqlite', resolverResult: TResult): MaterializeSqlite<TResult>;
13
+ export type MaterializeSchema<TResult extends SchemaResolverResult> = MaterializePg<TResult>;
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>);
39
16
  export {};
40
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":"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"}
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,41 +1,20 @@
1
- import * as mysqlCore from 'drizzle-orm/mysql-core';
2
1
  import * as pgCore from 'drizzle-orm/pg-core';
3
- import * as sqliteCore from 'drizzle-orm/sqlite-core';
4
2
  const tableBuilder = {
5
3
  table(columns) {
6
4
  return { __columns: columns };
7
5
  },
8
6
  };
9
- export function createSchemaBuilder(adapter) {
10
- switch (adapter) {
11
- case 'postgresql': {
12
- const { pgTable: _pgTable, ...pgColumns } = pgCore;
13
- return { ...tableBuilder, ...pgColumns };
14
- }
15
- case 'mysql': {
16
- const { mysqlTable: _mysqlTable, ...mysqlColumns } = mysqlCore;
17
- return { ...tableBuilder, ...mysqlColumns };
18
- }
19
- case 'sqlite': {
20
- const { sqliteTable: _sqliteTable, ...sqliteColumns } = sqliteCore;
21
- return { ...tableBuilder, ...sqliteColumns };
22
- }
23
- }
7
+ export function createSchemaBuilder() {
8
+ const { pgTable: _pgTable, ...pgColumns } = pgCore;
9
+ return { ...tableBuilder, ...pgColumns };
24
10
  }
25
- function createTable(adapter, tableName, columns) {
26
- switch (adapter) {
27
- case 'postgresql':
28
- return pgCore.pgTable(tableName, columns);
29
- case 'mysql':
30
- return mysqlCore.mysqlTable(tableName, columns);
31
- case 'sqlite':
32
- return sqliteCore.sqliteTable(tableName, columns);
33
- }
11
+ function createTable(tableName, columns) {
12
+ return pgCore.pgTable(tableName, columns);
34
13
  }
35
- export function materializeSchema(adapter, resolverResult) {
14
+ export function materializeSchema(resolverResult) {
36
15
  return Object.fromEntries(Object.entries(resolverResult).map(([tableName, columnMap]) => [
37
16
  tableName,
38
- createTable(adapter, tableName, columnMap.__columns),
17
+ createTable(tableName, columnMap.__columns),
39
18
  ]));
40
19
  }
41
20
  //# sourceMappingURL=schema-builder.drizzle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-builder.drizzle.js","sourceRoot":"","sources":["../../src/drizzle/schema-builder.drizzle.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAA;AACnD,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,UAAU,MAAM,yBAAyB,CAAA;AAYrD,MAAM,YAAY,GAAG;IACpB,KAAK,CACJ,OAAiB;QAEjB,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;IAC9B,CAAC;CACD,CAAA;AAQD,MAAM,UAAU,mBAAmB,CAClC,OAAwB;IAExB,QAAQ,OAAO,EAAE,CAAC;QACjB,KAAK,YAAY,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,MAAM,CAAA;YAClD,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,SAAS,EAAqB,CAAA;QAC5D,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,YAAY,EAAE,GAAG,SAAS,CAAA;YAC9D,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,YAAY,EAAwB,CAAA;QAClE,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACf,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE,GAAG,UAAU,CAAA;YAClE,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,aAAa,EAAyB,CAAA;QACpE,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,WAAW,CACnB,OAAwB,EACxB,SAAiB,EACjB,OAAgC;IAEhC,QAAQ,OAAO,EAAE,CAAC;QACjB,KAAK,YAAY;YAChB,OAAO,MAAM,CAAC,OAAO,CACpB,SAAS,EACT,OAAqD,CACrD,CAAA;QACF,KAAK,OAAO;YACX,OAAO,SAAS,CAAC,UAAU,CAC1B,SAAS,EACT,OAA2D,CAC3D,CAAA;QACF,KAAK,QAAQ;YACZ,OAAO,UAAU,CAAC,WAAW,CAC5B,SAAS,EACT,OAA6D,CAC7D,CAAA;IACH,CAAC;AACF,CAAC;AAsED,MAAM,UAAU,iBAAiB,CAChC,OAAwB,EACxB,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,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC;KACpD,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,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,7 +1,5 @@
1
- import type { ColumnBuilderBase } from 'drizzle-orm';
2
- import type * as MysqlCore from 'drizzle-orm/mysql-core';
1
+ import type { ColumnBuilderBase, Relation, Relations, relations } from 'drizzle-orm';
3
2
  import type * as PgCore from 'drizzle-orm/pg-core';
4
- import type * as SqliteCore from 'drizzle-orm/sqlite-core';
5
3
  export type ColumnMap<TColumns extends Record<string, ColumnBuilderBase>> = {
6
4
  readonly __columns: TColumns;
7
5
  };
@@ -9,9 +7,11 @@ interface SchemaTableBuilder {
9
7
  table<TColumns extends Record<string, ColumnBuilderBase>>(columns: TColumns): ColumnMap<TColumns>;
10
8
  }
11
9
  export type PgSchemaBuilder = SchemaTableBuilder & Omit<typeof PgCore, 'pgTable'>;
12
- export type MysqlSchemaBuilder = SchemaTableBuilder & Omit<typeof MysqlCore, 'mysqlTable'>;
13
- export type SqliteSchemaBuilder = SchemaTableBuilder & Omit<typeof SqliteCore, 'sqliteTable'>;
14
- export type SchemaBuilder = PgSchemaBuilder | MysqlSchemaBuilder | SqliteSchemaBuilder;
10
+ export type SchemaBuilder = PgSchemaBuilder;
15
11
  export type SchemaResolverResult = Record<string, ColumnMap<Record<string, ColumnBuilderBase>>>;
12
+ export type RelationsResolverResult = Record<string, Relations<string, Record<string, Relation>>>;
13
+ export interface RelationsHelpers {
14
+ relations: typeof relations;
15
+ }
16
16
  export {};
17
17
  //# sourceMappingURL=schema-builder.types.drizzle.d.ts.map
@@ -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,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,KAAK,SAAS,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,KAAK,UAAU,MAAM,yBAAyB,CAAA;AAO1D,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;AAG/B,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,GAClD,IAAI,CAAC,OAAO,SAAS,EAAE,YAAY,CAAC,CAAA;AAGrC,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GACnD,IAAI,CAAC,OAAO,UAAU,EAAE,aAAa,CAAC,CAAA;AAEvC,MAAM,MAAM,aAAa,GACtB,eAAe,GACf,kBAAkB,GAClB,mBAAmB,CAAA;AAEtB,MAAM,MAAM,oBAAoB,GAAG,MAAM,CACxC,MAAM,EACN,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAC5C,CAAA"}
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,3 +1,3 @@
1
- export type IsolationLevel = 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable' | 'deferred' | 'immediate' | 'exclusive';
1
+ export type IsolationLevel = 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable';
2
2
  export declare function Transactional(isolationLevel?: IsolationLevel): (_target: object, _propertyKey: string | symbol, descriptor: PropertyDescriptor) => PropertyDescriptor;
3
3
  //# sourceMappingURL=transactional.drizzle.d.ts.map
@@ -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,GACd,UAAU,GACV,WAAW,GACX,WAAW,CAAA;AAEd,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":"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 +1 @@
1
- {"version":3,"file":"transactional.drizzle.js","sourceRoot":"","sources":["../../src/drizzle/transactional.drizzle.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,YAAY,EACZ,KAAK,EACL,kBAAkB,GAClB,MAAM,0CAA0C,CAAA;AAWjD,MAAM,UAAU,aAAa,CAAC,cAA+B;IAC5D,OAAO,CACN,OAAe,EACf,YAA6B,EAC7B,UAA8B,EACT,EAAE;QACvB,MAAM,QAAQ,GAAG,UAAU,CAAC,KAEP,CAAA;QAErB,UAAU,CAAC,KAAK,GAAG,KAAK,WAA0B,GAAG,IAAe;YACnE,IAAI,YAAY,EAAE,KAAK,SAAS,EAAE,CAAC;gBAClC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAClC,CAAC;YAED,MAAM,EAAE,GAAG,KAAK,EAKf,CAAA;YAED,OAAO,EAAE,CAAC,WAAW,CACpB,CAAC,EAAW,EAAE,EAAE,CACf,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAC7D,cAAc;gBACb,CAAC,CAAC;oBACA,cAAc;iBACd;gBACF,CAAC,CAAC,SAAS,CACZ,CAAA;QACF,CAAC,CAAA;QAED,OAAO,UAAU,CAAA;IAClB,CAAC,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"transactional.drizzle.js","sourceRoot":"","sources":["../../src/drizzle/transactional.drizzle.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,YAAY,EACZ,KAAK,EACL,kBAAkB,GAClB,MAAM,0CAA0C,CAAA;AAQjD,MAAM,UAAU,aAAa,CAAC,cAA+B;IAC5D,OAAO,CACN,OAAe,EACf,YAA6B,EAC7B,UAA8B,EACT,EAAE;QACvB,MAAM,QAAQ,GAAG,UAAU,CAAC,KAEP,CAAA;QAErB,UAAU,CAAC,KAAK,GAAG,KAAK,WAA0B,GAAG,IAAe;YACnE,IAAI,YAAY,EAAE,KAAK,SAAS,EAAE,CAAC;gBAClC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAClC,CAAC;YAED,MAAM,EAAE,GAAG,KAAK,EAKf,CAAA;YAED,OAAO,EAAE,CAAC,WAAW,CACpB,CAAC,EAAW,EAAE,EAAE,CACf,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAC7D,cAAc;gBACb,CAAC,CAAC;oBACA,cAAc;iBACd;gBACF,CAAC,CAAC,SAAS,CACZ,CAAA;QACF,CAAC,CAAA;QAED,OAAO,UAAU,CAAA;IAClB,CAAC,CAAA;AACF,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,13 @@
1
- export * from './database.constants.js';
2
- export * from './database.module.js';
3
- export * from './database.service.js';
4
- export * from './database.types.js';
5
- export type { MaterializeSchema } from './drizzle/schema-builder.drizzle.js';
6
- export type { ColumnMap, MysqlSchemaBuilder, PgSchemaBuilder, SchemaBuilder, SchemaResolverResult, SqliteSchemaBuilder, } from './drizzle/schema-builder.types.drizzle.js';
1
+ export { DATABASE_SERVICE } from './database.constants.js';
2
+ export { DatabaseModule } from './database.module.js';
3
+ export { DatabaseService } from './database.service.js';
4
+ export type { DatabaseModuleOptions, DatabaseOptions, DatabaseRelationsResolver, DatabaseSchemaResolver, DatabaseServiceRegistry, InferDatabase, InferDatabaseConfig, ResolvedDatabase, } from './database.types.js';
5
+ export type { MaterializeSchema, MaterializeSchemaWithRelations, } from './drizzle/schema-builder.drizzle.js';
6
+ export { createSchemaBuilder, materializeSchema, } from './drizzle/schema-builder.drizzle.js';
7
+ export type { ColumnMap, PgSchemaBuilder, RelationsHelpers, RelationsResolverResult, SchemaBuilder, SchemaResolverResult, } from './drizzle/schema-builder.types.drizzle.js';
7
8
  export type { IsolationLevel } from './drizzle/transactional.drizzle.js';
8
9
  export { Transactional } from './drizzle/transactional.drizzle.js';
10
+ export { RecordNotCreatedError, RecordNotFoundError, } from './repository/table-repository.errors.js';
11
+ export { TableRepository } from './repository/table-repository.js';
12
+ export type { CountOptions, CreateInput, CreateOptions, DeleteOptions, ExistsOptions, FindByIdOptions, FullTableRepository, InferRepositories, InferReturning, PrimaryKeyInput, ReturningColumns, TableRepositoryMethods, UpdateByIdOptions, UpdateInput, UpdateOptions, UpsertOptions, WhereCallback, WhereInput, WhereOperators, } from './repository/table-repository.types.js';
9
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AAEnC,YAAY,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AAC5E,YAAY,EACX,SAAS,EACT,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,2CAA2C,CAAA;AAClD,YAAY,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,YAAY,EACX,qBAAqB,EACrB,eAAe,EACf,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,EACvB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,GAChB,MAAM,qBAAqB,CAAA;AAE5B,YAAY,EACX,iBAAiB,EACjB,8BAA8B,GAC9B,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACN,mBAAmB,EACnB,iBAAiB,GACjB,MAAM,qCAAqC,CAAA;AAC5C,YAAY,EACX,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,aAAa,EACb,oBAAoB,GACpB,MAAM,2CAA2C,CAAA;AAClD,YAAY,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAClE,OAAO,EACN,qBAAqB,EACrB,mBAAmB,GACnB,MAAM,yCAAyC,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,YAAY,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,cAAc,GACd,MAAM,wCAAwC,CAAA"}
package/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
- export * from './database.constants.js';
2
- export * from './database.module.js';
3
- export * from './database.service.js';
4
- export * from './database.types.js';
1
+ export { DATABASE_SERVICE } from './database.constants.js';
2
+ export { DatabaseModule } from './database.module.js';
3
+ export { DatabaseService } from './database.service.js';
4
+ export { createSchemaBuilder, materializeSchema, } from './drizzle/schema-builder.drizzle.js';
5
5
  export { Transactional } from './drizzle/transactional.drizzle.js';
6
+ export { RecordNotCreatedError, RecordNotFoundError, } from './repository/table-repository.errors.js';
7
+ export { TableRepository } from './repository/table-repository.js';
6
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AAYnC,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAgBvD,OAAO,EACN,mBAAmB,EACnB,iBAAiB,GACjB,MAAM,qCAAqC,CAAA;AAU5C,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAClE,OAAO,EACN,qBAAqB,EACrB,mBAAmB,GACnB,MAAM,yCAAyC,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA"}
@@ -0,0 +1,58 @@
1
+ import { type Table } from 'drizzle-orm';
2
+ export declare class TableRepository {
3
+ private readonly _getDb;
4
+ private readonly _tableName;
5
+ private readonly _table;
6
+ private readonly _pkColumn;
7
+ private readonly _pkHasDefault;
8
+ constructor(_getDb: () => unknown, _tableName: string, _table: Table);
9
+ findMany(config?: unknown): Promise<unknown[]>;
10
+ findFirst(config?: unknown): Promise<unknown>;
11
+ findById(id: unknown, options?: {
12
+ columns?: Record<string, boolean>;
13
+ with?: Record<string, unknown>;
14
+ }): Promise<unknown>;
15
+ count(options?: {
16
+ where?: unknown;
17
+ }): Promise<number>;
18
+ exists(options: {
19
+ where: unknown;
20
+ }): Promise<boolean>;
21
+ create(data: Record<string, unknown>, options?: {
22
+ returning?: Record<string, boolean>;
23
+ with?: Record<string, unknown>;
24
+ }): Promise<unknown>;
25
+ createMany(data: Record<string, unknown>[], options?: {
26
+ returning?: Record<string, boolean>;
27
+ }): Promise<unknown[]>;
28
+ update(options: {
29
+ where: unknown;
30
+ data: Record<string, unknown>;
31
+ returning?: Record<string, boolean>;
32
+ }): Promise<unknown[]>;
33
+ updateById(id: unknown, data: Record<string, unknown>, options?: {
34
+ returning?: Record<string, boolean>;
35
+ with?: Record<string, unknown>;
36
+ }): Promise<unknown>;
37
+ delete(options: {
38
+ where: unknown;
39
+ returning?: Record<string, boolean>;
40
+ }): Promise<unknown[]>;
41
+ deleteById(id: unknown): Promise<unknown>;
42
+ upsert(options: {
43
+ target: string[];
44
+ create: Record<string, unknown>;
45
+ update: Record<string, unknown>;
46
+ where?: unknown;
47
+ returning?: Record<string, boolean>;
48
+ with?: Record<string, unknown>;
49
+ }): Promise<unknown>;
50
+ private _db;
51
+ private _pkEq;
52
+ private _autoGeneratePk;
53
+ private _refetch;
54
+ private _mapReturning;
55
+ private _evaluateWhere;
56
+ private _applySelectWhere;
57
+ }
58
+ //# sourceMappingURL=table-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-repository.d.ts","sourceRoot":"","sources":["../../src/repository/table-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare class RecordNotFoundError extends Error {
2
+ readonly code = "record_not_found";
3
+ constructor(table: string);
4
+ }
5
+ export declare class RecordNotCreatedError extends Error {
6
+ readonly code = "record_not_created";
7
+ constructor(table: string);
8
+ }
9
+ //# sourceMappingURL=table-repository.errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-repository.errors.d.ts","sourceRoot":"","sources":["../../src/repository/table-repository.errors.ts"],"names":[],"mappings":"AAAA,qBAAa,mBAAoB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,sBAAqB;gBAEtB,KAAK,EAAE,MAAM;CAIzB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,wBAAuB;gBAExB,KAAK,EAAE,MAAM;CAIzB"}
@@ -0,0 +1,15 @@
1
+ export class RecordNotFoundError extends Error {
2
+ code = 'record_not_found';
3
+ constructor(table) {
4
+ super(`[TableRepository] record not found in "${table}"`);
5
+ this.name = 'RecordNotFoundError';
6
+ }
7
+ }
8
+ export class RecordNotCreatedError extends Error {
9
+ code = 'record_not_created';
10
+ constructor(table) {
11
+ super(`[TableRepository] insert returned no rows for "${table}"`);
12
+ this.name = 'RecordNotCreatedError';
13
+ }
14
+ }
15
+ //# sourceMappingURL=table-repository.errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-repository.errors.js","sourceRoot":"","sources":["../../src/repository/table-repository.errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACpC,IAAI,GAAG,kBAAkB,CAAA;IAElC,YAAY,KAAa;QACxB,KAAK,CAAC,0CAA0C,KAAK,GAAG,CAAC,CAAA;QACzD,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAA;IAClC,CAAC;CACD;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACtC,IAAI,GAAG,oBAAoB,CAAA;IAEpC,YAAY,KAAa;QACxB,KAAK,CAAC,kDAAkD,KAAK,GAAG,CAAC,CAAA;QACjE,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACpC,CAAC;CACD"}
@@ -0,0 +1,239 @@
1
+ import { and, between, count as countFn, eq, exists, getTableColumns, gt, gte, ilike, inArray, isNotNull, isNull, like, lt, lte, ne, not, notBetween, notExists, notIlike, notInArray, notLike, or, sql, } from 'drizzle-orm';
2
+ import { uuidv7 } from 'uuidv7';
3
+ import { RecordNotCreatedError, RecordNotFoundError, } from './table-repository.errors.js';
4
+ const WHERE_OPERATORS = {
5
+ eq,
6
+ ne,
7
+ gt,
8
+ gte,
9
+ lt,
10
+ lte,
11
+ and,
12
+ or,
13
+ not,
14
+ inArray,
15
+ notInArray,
16
+ isNull,
17
+ isNotNull,
18
+ exists,
19
+ notExists,
20
+ between,
21
+ notBetween,
22
+ like,
23
+ notLike,
24
+ ilike,
25
+ notIlike,
26
+ sql,
27
+ };
28
+ export class TableRepository {
29
+ _getDb;
30
+ _tableName;
31
+ _table;
32
+ _pkColumn;
33
+ _pkHasDefault;
34
+ constructor(_getDb, _tableName, _table) {
35
+ this._getDb = _getDb;
36
+ this._tableName = _tableName;
37
+ this._table = _table;
38
+ const columns = getTableColumns(this._table);
39
+ const pk = Object.entries(columns).find(([_, col]) => col.primary);
40
+ if (!pk) {
41
+ throw new Error(`[TableRepository] table "${_tableName}" has no primary key`);
42
+ }
43
+ this._pkColumn = pk[0];
44
+ this._pkHasDefault = pk[1].hasDefault;
45
+ }
46
+ async findMany(config) {
47
+ const db = this._db();
48
+ return db.query[this._tableName].findMany(config);
49
+ }
50
+ async findFirst(config) {
51
+ const db = this._db();
52
+ return db.query[this._tableName].findFirst(config);
53
+ }
54
+ async findById(id, options) {
55
+ return this.findFirst({
56
+ where: this._pkEq(id),
57
+ ...options,
58
+ });
59
+ }
60
+ async count(options) {
61
+ const db = this._db();
62
+ const query = db.select({ count: countFn() }).from(this._table);
63
+ const result = options?.where
64
+ ? await this._applySelectWhere(query, options.where)
65
+ : await query;
66
+ return Number(result[0].count);
67
+ }
68
+ async exists(options) {
69
+ const db = this._db();
70
+ const condition = this._evaluateWhere(options.where);
71
+ if (!condition) {
72
+ throw new Error('[TableRepository] where condition is required for exists');
73
+ }
74
+ const result = await db
75
+ .select({ _: sql `1` })
76
+ .from(this._table)
77
+ .where(condition)
78
+ .limit(1);
79
+ return result.length > 0;
80
+ }
81
+ async create(data, options) {
82
+ const createData = this._autoGeneratePk(data);
83
+ const db = this._db();
84
+ const chain = db.insert(this._table).values(createData);
85
+ if (options?.with) {
86
+ await chain.returning();
87
+ const result = await this._refetch(createData[this._pkColumn], {
88
+ columns: options?.returning,
89
+ with: options?.with,
90
+ });
91
+ if (!result)
92
+ throw new RecordNotCreatedError(this._tableName);
93
+ return result;
94
+ }
95
+ const rows = options?.returning
96
+ ? await chain.returning(this._mapReturning(options.returning))
97
+ : await chain.returning();
98
+ if (!rows[0])
99
+ throw new RecordNotCreatedError(this._tableName);
100
+ return rows[0];
101
+ }
102
+ async createMany(data, options) {
103
+ const rows = data.map((d) => this._autoGeneratePk(d));
104
+ const db = this._db();
105
+ const chain = db.insert(this._table).values(rows);
106
+ return options?.returning
107
+ ? chain.returning(this._mapReturning(options.returning))
108
+ : chain.returning();
109
+ }
110
+ async update(options) {
111
+ const db = this._db();
112
+ const condition = this._evaluateWhere(options.where);
113
+ if (!condition) {
114
+ throw new Error('[TableRepository] where condition is required for update');
115
+ }
116
+ const chain = db.update(this._table).set(options.data).where(condition);
117
+ return options.returning
118
+ ? chain.returning(this._mapReturning(options.returning))
119
+ : chain.returning();
120
+ }
121
+ async updateById(id, data, options) {
122
+ if (options?.with) {
123
+ await this.update({
124
+ where: this._pkEq(id),
125
+ data,
126
+ });
127
+ const result = await this._refetch(id, {
128
+ columns: options?.returning,
129
+ with: options?.with,
130
+ });
131
+ if (!result)
132
+ throw new RecordNotFoundError(this._tableName);
133
+ return result;
134
+ }
135
+ const rows = await this.update({
136
+ where: this._pkEq(id),
137
+ data,
138
+ returning: options?.returning,
139
+ });
140
+ if (!rows[0])
141
+ throw new RecordNotFoundError(this._tableName);
142
+ return rows[0];
143
+ }
144
+ async delete(options) {
145
+ const db = this._db();
146
+ const condition = this._evaluateWhere(options.where);
147
+ if (!condition) {
148
+ throw new Error('[TableRepository] where condition is required for delete');
149
+ }
150
+ const chain = db.delete(this._table).where(condition);
151
+ return options.returning
152
+ ? chain.returning(this._mapReturning(options.returning))
153
+ : chain.returning();
154
+ }
155
+ async deleteById(id) {
156
+ const rows = await this.delete({ where: this._pkEq(id) });
157
+ if (!rows[0])
158
+ throw new RecordNotFoundError(this._tableName);
159
+ return rows[0];
160
+ }
161
+ async upsert(options) {
162
+ const createData = this._autoGeneratePk(options.create);
163
+ const db = this._db();
164
+ const columns = getTableColumns(this._table);
165
+ const targetRefs = options.target.map((name) => columns[name]);
166
+ const conflictOpts = {
167
+ target: targetRefs,
168
+ set: options.update,
169
+ };
170
+ if (options.where) {
171
+ conflictOpts.where = this._evaluateWhere(options.where);
172
+ }
173
+ const chain = db
174
+ .insert(this._table)
175
+ .values(createData)
176
+ .onConflictDoUpdate(conflictOpts);
177
+ if (options.with) {
178
+ await chain.returning();
179
+ const result = await this._refetch(createData[this._pkColumn], {
180
+ columns: options.returning,
181
+ with: options.with,
182
+ });
183
+ if (!result)
184
+ throw new RecordNotCreatedError(this._tableName);
185
+ return result;
186
+ }
187
+ const rows = options.returning
188
+ ? await chain.returning(this._mapReturning(options.returning))
189
+ : await chain.returning();
190
+ if (!rows[0])
191
+ throw new RecordNotCreatedError(this._tableName);
192
+ return rows[0];
193
+ }
194
+ _db() {
195
+ return this._getDb();
196
+ }
197
+ _pkEq(id) {
198
+ const columns = getTableColumns(this._table);
199
+ return eq(columns[this._pkColumn], id);
200
+ }
201
+ _autoGeneratePk(data) {
202
+ if (this._pkHasDefault)
203
+ return data;
204
+ const value = data[this._pkColumn];
205
+ if (value !== undefined && value !== null)
206
+ return data;
207
+ return { ...data, [this._pkColumn]: uuidv7() };
208
+ }
209
+ async _refetch(pkValue, options) {
210
+ return this.findFirst({
211
+ where: this._pkEq(pkValue),
212
+ ...(options?.columns && { columns: options.columns }),
213
+ ...(options?.with && { with: options.with }),
214
+ });
215
+ }
216
+ _mapReturning(returning) {
217
+ const columns = getTableColumns(this._table);
218
+ const result = {};
219
+ for (const [key, include] of Object.entries(returning)) {
220
+ if (include && columns[key]) {
221
+ result[key] = columns[key];
222
+ }
223
+ }
224
+ return result;
225
+ }
226
+ _evaluateWhere(where) {
227
+ if (typeof where === 'function') {
228
+ return where(getTableColumns(this._table), WHERE_OPERATORS);
229
+ }
230
+ return where;
231
+ }
232
+ async _applySelectWhere(query, where) {
233
+ const condition = this._evaluateWhere(where);
234
+ if (condition)
235
+ return query.where(condition);
236
+ return query;
237
+ }
238
+ }
239
+ //# sourceMappingURL=table-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-repository.js","sourceRoot":"","sources":["../../src/repository/table-repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,GAAG,EACH,OAAO,EACP,KAAK,IAAI,OAAO,EAChB,EAAE,EACF,MAAM,EACN,eAAe,EACf,EAAE,EACF,GAAG,EACH,KAAK,EACL,OAAO,EACP,SAAS,EACT,MAAM,EACN,IAAI,EACJ,EAAE,EACF,GAAG,EACH,EAAE,EACF,GAAG,EACH,UAAU,EACV,SAAS,EACT,QAAQ,EACR,UAAU,EACV,OAAO,EACP,EAAE,EACF,GAAG,GACH,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EACN,qBAAqB,EACrB,mBAAmB,GACnB,MAAM,8BAA8B,CAAA;AAOrC,MAAM,eAAe,GAAmB;IACvC,EAAE;IACF,EAAE;IACF,EAAE;IACF,GAAG;IACH,EAAE;IACF,GAAG;IACH,GAAG;IACH,EAAE;IACF,GAAG;IACH,OAAO;IACP,UAAU;IACV,MAAM;IACN,SAAS;IACT,MAAM;IACN,SAAS;IACT,OAAO;IACP,UAAU;IACV,IAAI;IACJ,OAAO;IACP,KAAK;IACL,QAAQ;IACR,GAAG;CACH,CAAA;AA6CD,MAAM,OAAO,eAAe;IAKT;IACA;IACA;IAND,SAAS,CAAQ;IACjB,aAAa,CAAS;IAEvC,YACkB,MAAqB,EACrB,UAAkB,EAClB,MAAa;QAFb,WAAM,GAAN,MAAM,CAAe;QACrB,eAAU,GAAV,UAAU,CAAQ;QAClB,WAAM,GAAN,MAAM,CAAO;QAE9B,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC5C,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CACtC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAE,GAAuC,CAAC,OAAO,CAC9D,CAAA;QAED,IAAI,CAAC,EAAE,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CACd,4BAA4B,UAAU,sBAAsB,CAC5D,CAAA;QACF,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACtB,IAAI,CAAC,aAAa,GACjB,EAAE,CAAC,CAAC,CACJ,CAAC,UAAU,CAAA;IACb,CAAC;IAMD,KAAK,CAAC,QAAQ,CAAC,MAAgB;QAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACrB,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAgB;QAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACrB,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IACnD,CAAC;IAED,KAAK,CAAC,QAAQ,CACb,EAAW,EACX,OAA+E;QAE/E,OAAO,IAAI,CAAC,SAAS,CAAC;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,GAAG,OAAO;SACV,CAAC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAA6B;QACxC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACrB,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE/D,MAAM,MAAM,GAAG,OAAO,EAAE,KAAK;YAC5B,CAAC,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;YACpD,CAAC,CAAC,MAAM,KAAK,CAAA;QAEd,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAA2B;QACvC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAEpD,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACd,0DAA0D,CAC1D,CAAA;QACF,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,EAAE;aACrB,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,CAAA,GAAG,EAAE,CAAC;aACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;aACjB,KAAK,CAAC,SAAS,CAAC;aAChB,KAAK,CAAC,CAAC,CAAC,CAAA;QAEV,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;IACzB,CAAC;IAMD,KAAK,CAAC,MAAM,CACX,IAA6B,EAC7B,OAGC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACrB,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAEvD,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YACnB,MAAM,KAAK,CAAC,SAAS,EAAE,CAAA;YAEvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBAC9D,OAAO,EAAE,OAAO,EAAE,SAAS;gBAC3B,IAAI,EAAE,OAAO,EAAE,IAAI;aACnB,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAC7D,OAAO,MAAM,CAAA;QACd,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,EAAE,SAAS;YAC9B,CAAC,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC9D,CAAC,CAAC,MAAM,KAAK,CAAC,SAAS,EAAE,CAAA;QAE1B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC9D,OAAO,IAAI,CAAC,CAAC,CAAC,CAAA;IACf,CAAC;IAED,KAAK,CAAC,UAAU,CACf,IAA+B,EAC/B,OAAiD;QAEjD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;QACrD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACrB,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAEjD,OAAO,OAAO,EAAE,SAAS;YACxB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAIZ;QACA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAEpD,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACd,0DAA0D,CAC1D,CAAA;QACF,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAEvE,OAAO,OAAO,CAAC,SAAS;YACvB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,UAAU,CACf,EAAW,EACX,IAA6B,EAC7B,OAGC;QAED,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,MAAM,CAAC;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrB,IAAI;aACJ,CAAC,CAAA;YAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBACtC,OAAO,EAAE,OAAO,EAAE,SAAS;gBAC3B,IAAI,EAAE,OAAO,EAAE,IAAI;aACnB,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAC3D,OAAO,MAAM,CAAA;QACd,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI;YACJ,SAAS,EAAE,OAAO,EAAE,SAAS;SAC7B,CAAC,CAAA;QAEF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC5D,OAAO,IAAI,CAAC,CAAC,CAAC,CAAA;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAGZ;QACA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAEpD,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACd,0DAA0D,CAC1D,CAAA;QACF,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAErD,OAAO,OAAO,CAAC,SAAS;YACvB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAW;QAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACzD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC5D,OAAO,IAAI,CAAC,CAAC,CAAC,CAAA;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAOZ;QACA,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACvD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACrB,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE5C,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QAE9D,MAAM,YAAY,GAId;YACH,MAAM,EAAE,UAAU;YAClB,GAAG,EAAE,OAAO,CAAC,MAAM;SACnB,CAAA;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACxD,CAAC;QAED,MAAM,KAAK,GAAG,EAAE;aACd,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;aACnB,MAAM,CAAC,UAAU,CAAC;aAClB,kBAAkB,CAAC,YAAY,CAAC,CAAA;QAElC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,KAAK,CAAC,SAAS,EAAE,CAAA;YAEvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBAC9D,OAAO,EAAE,OAAO,CAAC,SAAS;gBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;aAClB,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAC7D,OAAO,MAAM,CAAA;QACd,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS;YAC7B,CAAC,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC9D,CAAC,CAAC,MAAM,KAAK,CAAC,SAAS,EAAE,CAAA;QAE1B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC9D,OAAO,IAAI,CAAC,CAAC,CAAC,CAAA;IACf,CAAC;IAMO,GAAG;QACV,OAAO,IAAI,CAAC,MAAM,EAAa,CAAA;IAChC,CAAC;IAEO,KAAK,CAAC,EAAW;QACxB,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC5C,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAW,CAAC,CAAA;IAChD,CAAC;IAEO,eAAe,CACtB,IAA6B;QAE7B,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAA;QAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAClC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAEtD,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,CAAA;IAC/C,CAAC;IAEO,KAAK,CAAC,QAAQ,CACrB,OAAgB,EAChB,OAGC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YAC1B,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YACrD,GAAG,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;SAC5C,CAAC,CAAA;IACH,CAAC;IAEO,aAAa,CACpB,SAAkC;QAElC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC5C,MAAM,MAAM,GAA4B,EAAE,CAAA;QAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACxD,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACF,CAAC;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IAEO,cAAc,CAAC,KAAc;QACpC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YACjC,OACC,KAIA,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,CAAA;QACjD,CAAC;QACD,OAAO,KAAwB,CAAA;IAChC,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC9B,KAAkB,EAClB,KAAc;QAEd,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;QAC5C,IAAI,SAAS;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC5C,OAAO,KAAK,CAAA;IACb,CAAC;CACD"}
@@ -0,0 +1,111 @@
1
+ import type { SQL, Table, InferSelectModel, InferInsertModel, and, between, eq, exists, gt, gte, ilike, inArray, isNotNull, isNull, like, lt, lte, ne, not, notBetween, notExists, notIlike, notInArray, notLike, or, sql } from 'drizzle-orm';
2
+ export type TableColumns<TTable extends Table> = TTable['_']['columns'];
3
+ type PrimaryKeyColumnsMap<TTable extends Table> = {
4
+ [K in keyof TableColumns<TTable> as TableColumns<TTable>[K]['_']['isPrimaryKey'] extends true ? K : never]: TableColumns<TTable>[K]['_']['data'];
5
+ };
6
+ type PKColumnNames<TTable extends Table> = keyof PrimaryKeyColumnsMap<TTable> & keyof InferInsertModel<TTable>;
7
+ export type PrimaryKeyInput<TTable extends Table> = PrimaryKeyColumnsMap<TTable>[keyof PrimaryKeyColumnsMap<TTable>];
8
+ export type CreateInput<TTable extends Table> = Omit<InferInsertModel<TTable>, PKColumnNames<TTable>> & Partial<Pick<InferInsertModel<TTable>, PKColumnNames<TTable>>>;
9
+ export type UpdateInput<TTable extends Table> = Partial<Omit<InferInsertModel<TTable>, PKColumnNames<TTable>>>;
10
+ export type ReturningColumns<TTable extends Table> = {
11
+ [K in keyof InferSelectModel<TTable>]?: boolean;
12
+ };
13
+ type TrueKeys<T extends Record<string, boolean | undefined>> = {
14
+ [K in keyof T]: T[K] extends true ? K : never;
15
+ }[keyof T];
16
+ export type InferReturning<TTable extends Table, TReturning extends ReturningColumns<TTable> | undefined> = TReturning extends Record<string, boolean | undefined> ? Pick<InferSelectModel<TTable>, TrueKeys<TReturning> & keyof InferSelectModel<TTable>> : InferSelectModel<TTable>;
17
+ export interface WhereOperators {
18
+ eq: typeof eq;
19
+ ne: typeof ne;
20
+ gt: typeof gt;
21
+ gte: typeof gte;
22
+ lt: typeof lt;
23
+ lte: typeof lte;
24
+ and: typeof and;
25
+ or: typeof or;
26
+ not: typeof not;
27
+ inArray: typeof inArray;
28
+ notInArray: typeof notInArray;
29
+ isNull: typeof isNull;
30
+ isNotNull: typeof isNotNull;
31
+ exists: typeof exists;
32
+ notExists: typeof notExists;
33
+ between: typeof between;
34
+ notBetween: typeof notBetween;
35
+ like: typeof like;
36
+ notLike: typeof notLike;
37
+ ilike: typeof ilike;
38
+ notIlike: typeof notIlike;
39
+ sql: typeof sql;
40
+ }
41
+ export type WhereCallback<TTable extends Table> = (fields: TableColumns<TTable>, operators: WhereOperators) => SQL | undefined;
42
+ export type WhereInput<TTable extends Table> = WhereCallback<TTable> | SQL;
43
+ type ExtractConfig<T> = T extends (config?: infer C) => unknown ? C : never;
44
+ type ExtractWith<T> = T extends {
45
+ with?: infer W;
46
+ } ? W : never;
47
+ export interface FindByIdOptions<TTable extends Table, TWith = Record<string, unknown>> {
48
+ columns?: {
49
+ [K in keyof InferSelectModel<TTable>]?: boolean;
50
+ };
51
+ with?: TWith;
52
+ }
53
+ export interface CreateOptions<TTable extends Table, TReturning extends ReturningColumns<TTable> | undefined = undefined, TWith = Record<string, unknown>> {
54
+ returning?: TReturning;
55
+ with?: TWith;
56
+ }
57
+ export interface UpdateOptions<TTable extends Table, TReturning extends ReturningColumns<TTable> | undefined = undefined> {
58
+ where: WhereInput<TTable>;
59
+ data: UpdateInput<TTable>;
60
+ returning?: TReturning;
61
+ }
62
+ export interface UpdateByIdOptions<TTable extends Table, TReturning extends ReturningColumns<TTable> | undefined = undefined, TWith = Record<string, unknown>> {
63
+ returning?: TReturning;
64
+ with?: TWith;
65
+ }
66
+ export interface DeleteOptions<TTable extends Table, TReturning extends ReturningColumns<TTable> | undefined = undefined> {
67
+ where: WhereInput<TTable>;
68
+ returning?: TReturning;
69
+ }
70
+ export interface CountOptions<TTable extends Table> {
71
+ where?: WhereInput<TTable>;
72
+ }
73
+ export interface ExistsOptions<TTable extends Table> {
74
+ where: WhereInput<TTable>;
75
+ }
76
+ export interface UpsertOptions<TTable extends Table, TReturning extends ReturningColumns<TTable> | undefined = undefined, TWith = Record<string, unknown>> {
77
+ target: (keyof InferInsertModel<TTable>)[];
78
+ create: CreateInput<TTable>;
79
+ update: UpdateInput<TTable>;
80
+ where?: WhereInput<TTable>;
81
+ returning?: TReturning;
82
+ with?: TWith;
83
+ }
84
+ export interface TableRepositoryMethods<TTable extends Table, TWith = Record<string, unknown>> {
85
+ findById(id: PrimaryKeyInput<TTable>, options?: FindByIdOptions<TTable, TWith>): Promise<InferSelectModel<TTable> | undefined>;
86
+ create<TReturning extends ReturningColumns<TTable> | undefined = undefined>(data: CreateInput<TTable>, options?: CreateOptions<TTable, TReturning, TWith>): Promise<InferReturning<TTable, TReturning>>;
87
+ createMany<TReturning extends ReturningColumns<TTable> | undefined = undefined>(data: CreateInput<TTable>[], options?: {
88
+ returning?: TReturning;
89
+ }): Promise<InferReturning<TTable, TReturning>[]>;
90
+ update<TReturning extends ReturningColumns<TTable> | undefined = undefined>(options: UpdateOptions<TTable, TReturning>): Promise<InferReturning<TTable, TReturning>[]>;
91
+ updateById<TReturning extends ReturningColumns<TTable> | undefined = undefined>(id: PrimaryKeyInput<TTable>, data: UpdateInput<TTable>, options?: UpdateByIdOptions<TTable, TReturning, TWith>): Promise<InferReturning<TTable, TReturning>>;
92
+ delete<TReturning extends ReturningColumns<TTable> | undefined = undefined>(options: DeleteOptions<TTable, TReturning>): Promise<InferReturning<TTable, TReturning>[]>;
93
+ deleteById(id: PrimaryKeyInput<TTable>): Promise<InferSelectModel<TTable>>;
94
+ count(options?: CountOptions<TTable>): Promise<number>;
95
+ exists(options: ExistsOptions<TTable>): Promise<boolean>;
96
+ upsert<TReturning extends ReturningColumns<TTable> | undefined = undefined>(options: UpsertOptions<TTable, TReturning, TWith>): Promise<InferReturning<TTable, TReturning>>;
97
+ }
98
+ export type FullTableRepository<TDb, TName extends string, TTable extends Table> = TDb extends {
99
+ query: infer Q;
100
+ } ? TName extends keyof Q ? Q[TName] extends {
101
+ findMany: infer FM;
102
+ findFirst: infer FF;
103
+ } ? TableRepositoryMethods<TTable, ExtractWith<ExtractConfig<FF>>> & {
104
+ findMany: FM;
105
+ findFirst: FF;
106
+ } : TableRepositoryMethods<TTable> : TableRepositoryMethods<TTable> : TableRepositoryMethods<TTable>;
107
+ export type InferRepositories<TDb, TSchema extends Record<string, Table>> = {
108
+ [K in keyof TSchema & string]: FullTableRepository<TDb, K, TSchema[K]>;
109
+ };
110
+ export {};
111
+ //# sourceMappingURL=table-repository.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-repository.types.d.ts","sourceRoot":"","sources":["../../src/repository/table-repository.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,GAAG,EACH,KAAK,EACL,gBAAgB,EAChB,gBAAgB,EAChB,GAAG,EACH,OAAO,EACP,EAAE,EACF,MAAM,EACN,EAAE,EACF,GAAG,EACH,KAAK,EACL,OAAO,EACP,SAAS,EACT,MAAM,EACN,IAAI,EACJ,EAAE,EACF,GAAG,EACH,EAAE,EACF,GAAG,EACH,UAAU,EACV,SAAS,EACT,QAAQ,EACR,UAAU,EACV,OAAO,EACP,EAAE,EACF,GAAG,EACH,MAAM,aAAa,CAAA;AAMpB,MAAM,MAAM,YAAY,CAAC,MAAM,SAAS,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAA;AAEvE,KAAK,oBAAoB,CAAC,MAAM,SAAS,KAAK,IAAI;KAChD,CAAC,IAAI,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,SAAS,IAAI,GAC1F,CAAC,GACD,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;CAC/C,CAAA;AAED,KAAK,aAAa,CAAC,MAAM,SAAS,KAAK,IAAI,MAAM,oBAAoB,CAAC,MAAM,CAAC,GAC5E,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAA;AAM/B,MAAM,MAAM,eAAe,CAAC,MAAM,SAAS,KAAK,IAC/C,oBAAoB,CAAC,MAAM,CAAC,CAAC,MAAM,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAA;AAMjE,MAAM,MAAM,WAAW,CAAC,MAAM,SAAS,KAAK,IAAI,IAAI,CACnD,gBAAgB,CAAC,MAAM,CAAC,EACxB,aAAa,CAAC,MAAM,CAAC,CACrB,GACA,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAE/D,MAAM,MAAM,WAAW,CAAC,MAAM,SAAS,KAAK,IAAI,OAAO,CACtD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CACrD,CAAA;AAMD,MAAM,MAAM,gBAAgB,CAAC,MAAM,SAAS,KAAK,IAAI;KACnD,CAAC,IAAI,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO;CAC/C,CAAA;AAED,KAAK,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC,IAAI;KAC7D,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK;CAC7C,CAAC,MAAM,CAAC,CAAC,CAAA;AAEV,MAAM,MAAM,cAAc,CACzB,MAAM,SAAS,KAAK,EACpB,UAAU,SAAS,gBAAgB,CAAC,MAAM,CAAC,GAAG,SAAS,IACpD,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC,GACvD,IAAI,CACJ,gBAAgB,CAAC,MAAM,CAAC,EACxB,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CACrD,GACA,gBAAgB,CAAC,MAAM,CAAC,CAAA;AAM3B,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,OAAO,EAAE,CAAA;IACb,EAAE,EAAE,OAAO,EAAE,CAAA;IACb,EAAE,EAAE,OAAO,EAAE,CAAA;IACb,GAAG,EAAE,OAAO,GAAG,CAAA;IACf,EAAE,EAAE,OAAO,EAAE,CAAA;IACb,GAAG,EAAE,OAAO,GAAG,CAAA;IACf,GAAG,EAAE,OAAO,GAAG,CAAA;IACf,EAAE,EAAE,OAAO,EAAE,CAAA;IACb,GAAG,EAAE,OAAO,GAAG,CAAA;IACf,OAAO,EAAE,OAAO,OAAO,CAAA;IACvB,UAAU,EAAE,OAAO,UAAU,CAAA;IAC7B,MAAM,EAAE,OAAO,MAAM,CAAA;IACrB,SAAS,EAAE,OAAO,SAAS,CAAA;IAC3B,MAAM,EAAE,OAAO,MAAM,CAAA;IACrB,SAAS,EAAE,OAAO,SAAS,CAAA;IAC3B,OAAO,EAAE,OAAO,OAAO,CAAA;IACvB,UAAU,EAAE,OAAO,UAAU,CAAA;IAC7B,IAAI,EAAE,OAAO,IAAI,CAAA;IACjB,OAAO,EAAE,OAAO,OAAO,CAAA;IACvB,KAAK,EAAE,OAAO,KAAK,CAAA;IACnB,QAAQ,EAAE,OAAO,QAAQ,CAAA;IACzB,GAAG,EAAE,OAAO,GAAG,CAAA;CACf;AAED,MAAM,MAAM,aAAa,CAAC,MAAM,SAAS,KAAK,IAAI,CACjD,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,EAC5B,SAAS,EAAE,cAAc,KACrB,GAAG,GAAG,SAAS,CAAA;AAEpB,MAAM,MAAM,UAAU,CAAC,MAAM,SAAS,KAAK,IAAI,aAAa,CAAC,MAAM,CAAC,GAAG,GAAG,CAAA;AAM1E,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,OAAO,GAAG,CAAC,GAAG,KAAK,CAAA;AAC3E,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAA;AAM9D,MAAM,WAAW,eAAe,CAC/B,MAAM,SAAS,KAAK,EACpB,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE/B,OAAO,CAAC,EAAE;SAAG,CAAC,IAAI,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO;KAAE,CAAA;IAC7D,IAAI,CAAC,EAAE,KAAK,CAAA;CACZ;AAED,MAAM,WAAW,aAAa,CAC7B,MAAM,SAAS,KAAK,EACpB,UAAU,SAAS,gBAAgB,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS,EACnE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE/B,SAAS,CAAC,EAAE,UAAU,CAAA;IACtB,IAAI,CAAC,EAAE,KAAK,CAAA;CACZ;AAED,MAAM,WAAW,aAAa,CAC7B,MAAM,SAAS,KAAK,EACpB,UAAU,SAAS,gBAAgB,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS;IAEnE,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IACzB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACzB,SAAS,CAAC,EAAE,UAAU,CAAA;CACtB;AAED,MAAM,WAAW,iBAAiB,CACjC,MAAM,SAAS,KAAK,EACpB,UAAU,SAAS,gBAAgB,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS,EACnE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE/B,SAAS,CAAC,EAAE,UAAU,CAAA;IACtB,IAAI,CAAC,EAAE,KAAK,CAAA;CACZ;AAED,MAAM,WAAW,aAAa,CAC7B,MAAM,SAAS,KAAK,EACpB,UAAU,SAAS,gBAAgB,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS;IAEnE,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IACzB,SAAS,CAAC,EAAE,UAAU,CAAA;CACtB;AAED,MAAM,WAAW,YAAY,CAAC,MAAM,SAAS,KAAK;IACjD,KAAK,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;CAC1B;AAED,MAAM,WAAW,aAAa,CAAC,MAAM,SAAS,KAAK;IAClD,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;CACzB;AAED,MAAM,WAAW,aAAa,CAC7B,MAAM,SAAS,KAAK,EACpB,UAAU,SAAS,gBAAgB,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS,EACnE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE/B,MAAM,EAAE,CAAC,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAA;IAC1C,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC3B,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC3B,KAAK,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IAC1B,SAAS,CAAC,EAAE,UAAU,CAAA;IACtB,IAAI,CAAC,EAAE,KAAK,CAAA;CACZ;AAMD,MAAM,WAAW,sBAAsB,CACtC,MAAM,SAAS,KAAK,EACpB,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE/B,QAAQ,CACP,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,EAC3B,OAAO,CAAC,EAAE,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,GACtC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAA;IAEhD,MAAM,CACL,UAAU,SAAS,gBAAgB,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS,EAEnE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EACzB,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,GAChD,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;IAE9C,UAAU,CACT,UAAU,SAAS,gBAAgB,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS,EAEnE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,EAC3B,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,UAAU,CAAA;KAAE,GAClC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,CAAA;IAEhD,MAAM,CACL,UAAU,SAAS,gBAAgB,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS,EAEnE,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,GACxC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,CAAA;IAEhD,UAAU,CACT,UAAU,SAAS,gBAAgB,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS,EAEnE,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,EAC3B,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EACzB,OAAO,CAAC,EAAE,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,GACpD,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;IAE9C,MAAM,CACL,UAAU,SAAS,gBAAgB,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS,EAEnE,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,GACxC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,CAAA;IAEhD,UAAU,CAAC,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAA;IAE1E,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAEtD,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAExD,MAAM,CACL,UAAU,SAAS,gBAAgB,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS,EAEnE,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,GAC/C,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;CAC9C;AAMD,MAAM,MAAM,mBAAmB,CAC9B,GAAG,EACH,KAAK,SAAS,MAAM,EACpB,MAAM,SAAS,KAAK,IACjB,GAAG,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC,CAAA;CAAE,GAC/B,KAAK,SAAS,MAAM,CAAC,GACpB,CAAC,CAAC,KAAK,CAAC,SAAS;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,SAAS,EAAE,MAAM,EAAE,CAAA;CACnB,GACC,sBAAsB,CACtB,MAAM,EACN,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAC9B,GAAG;IAAE,QAAQ,EAAE,EAAE,CAAC;IAAC,SAAS,EAAE,EAAE,CAAA;CAAE,GAClC,sBAAsB,CAAC,MAAM,CAAC,GAC/B,sBAAsB,CAAC,MAAM,CAAC,GAC/B,sBAAsB,CAAC,MAAM,CAAC,CAAA;AAEjC,MAAM,MAAM,iBAAiB,CAC5B,GAAG,EACH,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAClC;KACF,CAAC,IAAI,MAAM,OAAO,GAAG,MAAM,GAAG,mBAAmB,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CACtE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=table-repository.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-repository.types.js","sourceRoot":"","sources":["../../src/repository/table-repository.types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@turystack/nestjs-database",
3
3
  "private": false,
4
- "version": "0.0.9",
4
+ "version": "0.0.11",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.js",
@@ -23,42 +23,32 @@
23
23
  "type": "git",
24
24
  "url": "https://github.com/turystack/nestjs-database.git"
25
25
  },
26
- "dependencies": {
27
- "@turystack/nestjs-database": "link:",
28
- "drizzle-orm": "^0.44.0"
29
- },
30
26
  "peerDependencies": {
31
27
  "@nestjs/common": "^11.0.0",
32
28
  "@nestjs/core": "^11.0.0",
33
- "better-sqlite3": "^11.0.0",
34
- "mysql2": "^3.0.0",
29
+ "drizzle-orm": ">=0.44.0",
35
30
  "pg": "^8.0.0",
36
- "reflect-metadata": "^0.2.0"
31
+ "reflect-metadata": "^0.2.0",
32
+ "uuidv7": "^1.2.1"
37
33
  },
38
34
  "peerDependenciesMeta": {
39
35
  "pg": {
40
36
  "optional": true
41
- },
42
- "mysql2": {
43
- "optional": true
44
- },
45
- "better-sqlite3": {
46
- "optional": true
47
37
  }
48
38
  },
49
39
  "devDependencies": {
50
40
  "@biomejs/biome": "2.2.2",
51
41
  "@nestjs/common": "^11.0.0",
52
42
  "@nestjs/core": "^11.0.0",
53
- "@types/better-sqlite3": "^7.0.0",
54
43
  "@types/node": "^22.19.15",
55
44
  "@types/pg": "^8.0.0",
56
45
  "@vitest/coverage-v8": "^2.1.0",
57
- "better-sqlite3": "^11.0.0",
46
+ "drizzle-orm": "^0.44.0",
58
47
  "pg": "^8.0.0",
59
48
  "reflect-metadata": "^0.2.2",
60
49
  "tsc-alias": "^1.8.16",
61
50
  "typescript": "^5.5.0",
51
+ "uuidv7": "^1.2.1",
62
52
  "vitest": "^2.1.0"
63
53
  },
64
54
  "scripts": {