@optimatech88/titomeet-shared-lib 1.1.1 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/prisma/prisma.module.d.ts +8 -0
- package/dist/prisma/prisma.module.d.ts.map +1 -1
- package/dist/prisma/prisma.module.js +33 -6
- package/dist/prisma/prisma.module.js.map +1 -1
- package/dist/prisma/prisma.service.d.ts +3 -1
- package/dist/prisma/prisma.service.d.ts.map +1 -1
- package/dist/prisma/prisma.service.js +12 -5
- package/dist/prisma/prisma.service.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +60 -38
- package/src/prisma/prisma.module.ts +40 -6
- package/src/prisma/prisma.service.ts +19 -6
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export
|
|
2
|
-
export {
|
|
1
|
+
export { PrismaClient, Prisma, } from '@generated/prisma/client';
|
|
2
|
+
export type { User, Account, Address, EventCategory, Event, EventPrice, Chat, ChatUser, Message, Notification, ProviderCategory, Provider, ProviderOnEvent, Review, Favorite, Order, OrderItem, UserInterests, Newsletter, Pricing, Transaction, Feedback, Report, Country, } from '@generated/prisma/client';
|
|
3
|
+
export { AccountType, UserRole, UserStatus, EventType, EventAccess, EventVisibility, EventStatus, TicketHandler, MediaType, NotificationType, ProviderStatus, ProviderOnEventStatus, OrderStatus, PaymentStatus, PricingType, PricingDuration, PaymentMethod, TransactionStatus, } from '@generated/prisma/enums';
|
|
3
4
|
export * from './auth/auth.guard';
|
|
4
5
|
export * from './auth/auth.module';
|
|
5
6
|
export * from './auth/admin.middleware';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EACZ,MAAM,GACP,MAAM,0BAA0B,CAAC;AAIlC,YAAY,EACV,IAAI,EACJ,OAAO,EACP,OAAO,EACP,aAAa,EACb,KAAK,EACL,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,MAAM,EACN,QAAQ,EACR,KAAK,EACL,SAAS,EACT,aAAa,EACb,UAAU,EACV,OAAO,EACP,WAAW,EACX,QAAQ,EACR,MAAM,EACN,OAAO,GACR,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,WAAW,EACX,QAAQ,EACR,UAAU,EACV,SAAS,EACT,WAAW,EACX,eAAe,EACf,WAAW,EACX,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,WAAW,EACX,eAAe,EACf,aAAa,EACb,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAKjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAG9B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export
|
|
2
|
-
export {
|
|
1
|
+
export { PrismaClient, Prisma, } from "./generated/prisma/client";
|
|
2
|
+
export { AccountType, UserRole, UserStatus, EventType, EventAccess, EventVisibility, EventStatus, TicketHandler, MediaType, NotificationType, ProviderStatus, ProviderOnEventStatus, OrderStatus, PaymentStatus, PricingType, PricingDuration, PaymentMethod, TransactionStatus, } from "./generated/prisma/enums";
|
|
3
3
|
export * from './auth/auth.guard';
|
|
4
4
|
export * from './auth/auth.module';
|
|
5
5
|
export * from './auth/admin.middleware';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EACZ,MAAM,GACP,kCAAiC;AAgClC,OAAO,EACL,WAAW,EACX,QAAQ,EACR,UAAU,EACV,SAAS,EACT,WAAW,EACX,eAAe,EACf,WAAW,EACX,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,WAAW,EACX,eAAe,EACf,aAAa,EACb,iBAAiB,GAClB,iCAAgC;AAKjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAG9B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
import { DynamicModule } from '@nestjs/common';
|
|
2
|
+
export interface PrismaModuleAsyncOptions {
|
|
3
|
+
useFactory: (...args: any[]) => Promise<string> | string;
|
|
4
|
+
inject?: any[];
|
|
5
|
+
imports?: any[];
|
|
6
|
+
}
|
|
1
7
|
export declare class PrismaModule {
|
|
8
|
+
static forRoot(databaseUrl?: string): DynamicModule;
|
|
9
|
+
static forRootAsync(options: PrismaModuleAsyncOptions): DynamicModule;
|
|
2
10
|
}
|
|
3
11
|
//# sourceMappingURL=prisma.module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma.module.d.ts","sourceRoot":"","sources":["../../src/prisma/prisma.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prisma.module.d.ts","sourceRoot":"","sources":["../../src/prisma/prisma.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,aAAa,EAAQ,MAAM,gBAAgB,CAAC;AAGrE,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IACzD,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;CACjB;AAED,qBAEa,YAAY;IACvB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,aAAa;IAanD,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,wBAAwB,GAAG,aAAa;CAiBtE"}
|
|
@@ -4,16 +4,43 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
+
var PrismaModule_1;
|
|
7
8
|
import { Module, Global } from '@nestjs/common';
|
|
8
9
|
import { PrismaService } from './prisma.service';
|
|
9
|
-
let PrismaModule = class PrismaModule {
|
|
10
|
+
let PrismaModule = PrismaModule_1 = class PrismaModule {
|
|
11
|
+
static forRoot(databaseUrl) {
|
|
12
|
+
return {
|
|
13
|
+
module: PrismaModule_1,
|
|
14
|
+
providers: [
|
|
15
|
+
{
|
|
16
|
+
provide: PrismaService,
|
|
17
|
+
useFactory: () => new PrismaService(databaseUrl),
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
exports: [PrismaService],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
static forRootAsync(options) {
|
|
24
|
+
return {
|
|
25
|
+
module: PrismaModule_1,
|
|
26
|
+
imports: options.imports || [],
|
|
27
|
+
providers: [
|
|
28
|
+
{
|
|
29
|
+
provide: PrismaService,
|
|
30
|
+
useFactory: async (...args) => {
|
|
31
|
+
const url = await options.useFactory(...args);
|
|
32
|
+
return new PrismaService(url);
|
|
33
|
+
},
|
|
34
|
+
inject: options.inject || [],
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
exports: [PrismaService],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
10
40
|
};
|
|
11
|
-
PrismaModule = __decorate([
|
|
41
|
+
PrismaModule = PrismaModule_1 = __decorate([
|
|
12
42
|
Global(),
|
|
13
|
-
Module({
|
|
14
|
-
providers: [PrismaService],
|
|
15
|
-
exports: [PrismaService],
|
|
16
|
-
})
|
|
43
|
+
Module({})
|
|
17
44
|
], PrismaModule);
|
|
18
45
|
export { PrismaModule };
|
|
19
46
|
//# sourceMappingURL=prisma.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma.module.js","sourceRoot":"","sources":["../../src/prisma/prisma.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prisma.module.js","sourceRoot":"","sources":["../../src/prisma/prisma.module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAuB,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAU1C,IAAM,YAAY,oBAAlB,MAAM,YAAY;IACvB,MAAM,CAAC,OAAO,CAAC,WAAoB;QACjC,OAAO;YACL,MAAM,EAAE,cAAY;YACpB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,aAAa;oBACtB,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC;iBACjD;aACF;YACD,OAAO,EAAE,CAAC,aAAa,CAAC;SACzB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAiC;QACnD,OAAO;YACL,MAAM,EAAE,cAAY;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,aAAa;oBACtB,UAAU,EAAE,KAAK,EAAE,GAAG,IAAW,EAAE,EAAE;wBACnC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;wBAC9C,OAAO,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;oBAChC,CAAC;oBACD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;iBAC7B;aACF;YACD,OAAO,EAAE,CAAC,aAAa,CAAC;SACzB,CAAC;IACJ,CAAC;CACF,CAAA;AA/BY,YAAY;IAFxB,MAAM,EAAE;IACR,MAAM,CAAC,EAAE,CAAC;GACE,YAAY,CA+BxB"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { OnModuleDestroy, OnModuleInit } from '@nestjs/common';
|
|
2
2
|
import { PrismaClient } from '@generated/prisma/client';
|
|
3
3
|
export declare class PrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy {
|
|
4
|
-
|
|
4
|
+
private static instance;
|
|
5
|
+
private databaseUrl;
|
|
6
|
+
constructor(databaseUrl?: string);
|
|
5
7
|
onModuleInit(): Promise<void>;
|
|
6
8
|
onModuleDestroy(): Promise<void>;
|
|
7
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma.service.d.ts","sourceRoot":"","sources":["../../src/prisma/prisma.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"prisma.service.d.ts","sourceRoot":"","sources":["../../src/prisma/prisma.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,qBACa,aAAc,SAAQ,YAAa,YAAW,YAAY,EAAE,eAAe;IACtF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,CAAC,EAAE,MAAM;IAe1B,YAAY;IAIZ,eAAe;CAMtB"}
|
|
@@ -10,12 +10,19 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
import { Injectable } from '@nestjs/common';
|
|
11
11
|
import { PrismaClient } from "../generated/prisma/client";
|
|
12
12
|
import { PrismaPg } from '@prisma/adapter-pg';
|
|
13
|
-
const adapter = new PrismaPg({
|
|
14
|
-
connectionString: process.env.DATABASE_URL,
|
|
15
|
-
});
|
|
16
13
|
let PrismaService = class PrismaService extends PrismaClient {
|
|
17
|
-
|
|
14
|
+
static instance;
|
|
15
|
+
databaseUrl;
|
|
16
|
+
constructor(databaseUrl) {
|
|
17
|
+
const url = databaseUrl || process.env.DATABASE_URL;
|
|
18
|
+
if (!url) {
|
|
19
|
+
throw new Error('DATABASE_URL is not defined');
|
|
20
|
+
}
|
|
21
|
+
const adapter = new PrismaPg({
|
|
22
|
+
connectionString: url,
|
|
23
|
+
});
|
|
18
24
|
super({ adapter });
|
|
25
|
+
this.databaseUrl = url;
|
|
19
26
|
}
|
|
20
27
|
async onModuleInit() {
|
|
21
28
|
await this.$connect();
|
|
@@ -26,7 +33,7 @@ let PrismaService = class PrismaService extends PrismaClient {
|
|
|
26
33
|
};
|
|
27
34
|
PrismaService = __decorate([
|
|
28
35
|
Injectable(),
|
|
29
|
-
__metadata("design:paramtypes", [])
|
|
36
|
+
__metadata("design:paramtypes", [String])
|
|
30
37
|
], PrismaService);
|
|
31
38
|
export { PrismaService };
|
|
32
39
|
//# sourceMappingURL=prisma.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma.service.js","sourceRoot":"","sources":["../../src/prisma/prisma.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAiC,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,mCAAiC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"prisma.service.js","sourceRoot":"","sources":["../../src/prisma/prisma.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAiC,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,mCAAiC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGvC,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,YAAY;IACrC,MAAM,CAAC,QAAQ,CAAgB;IAC/B,WAAW,CAAS;IAE5B,YAAY,WAAoB;QAC9B,MAAM,GAAG,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAEpD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC;YAC3B,gBAAgB,EAAE,GAAG;SACtB,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;CAIF,CAAA;AA7BY,aAAa;IADzB,UAAU,EAAE;;GACA,aAAa,CA6BzB"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,43 +1,63 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
AccountType,
|
|
7
|
-
UserRole,
|
|
8
|
-
Event,
|
|
9
|
-
EventAccess,
|
|
10
|
-
EventVisibility,
|
|
11
|
-
EventStatus,
|
|
12
|
-
EventPrice, Address,
|
|
13
|
-
Provider,
|
|
14
|
-
ProviderStatus,
|
|
15
|
-
EventCategory,
|
|
16
|
-
Review,
|
|
17
|
-
ProviderCategory,
|
|
18
|
-
Order,
|
|
19
|
-
OrderStatus,
|
|
20
|
-
OrderItem,
|
|
21
|
-
PaymentStatus,
|
|
22
|
-
Chat,
|
|
23
|
-
ChatUser,
|
|
24
|
-
Message,
|
|
25
|
-
Notification,
|
|
26
|
-
NotificationType,
|
|
27
|
-
ProviderOnEvent,
|
|
28
|
-
UserInterests,
|
|
29
|
-
UserStatus,
|
|
30
|
-
ProviderOnEventStatus,
|
|
31
|
-
Pricing,
|
|
32
|
-
PricingType,
|
|
33
|
-
PricingDuration,
|
|
34
|
-
Transaction,
|
|
35
|
-
TransactionStatus,
|
|
36
|
-
PaymentMethod,
|
|
37
|
-
Prisma,
|
|
38
|
-
TicketHandler,
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
export {
|
|
4
|
+
PrismaClient,
|
|
5
|
+
Prisma,
|
|
39
6
|
} from '@generated/prisma/client';
|
|
40
7
|
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
export type {
|
|
11
|
+
User,
|
|
12
|
+
Account,
|
|
13
|
+
Address,
|
|
14
|
+
EventCategory,
|
|
15
|
+
Event,
|
|
16
|
+
EventPrice,
|
|
17
|
+
Chat,
|
|
18
|
+
ChatUser,
|
|
19
|
+
Message,
|
|
20
|
+
Notification,
|
|
21
|
+
ProviderCategory,
|
|
22
|
+
Provider,
|
|
23
|
+
ProviderOnEvent,
|
|
24
|
+
Review,
|
|
25
|
+
Favorite,
|
|
26
|
+
Order,
|
|
27
|
+
OrderItem,
|
|
28
|
+
UserInterests,
|
|
29
|
+
Newsletter,
|
|
30
|
+
Pricing,
|
|
31
|
+
Transaction,
|
|
32
|
+
Feedback,
|
|
33
|
+
Report,
|
|
34
|
+
Country,
|
|
35
|
+
} from '@generated/prisma/client';
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
export {
|
|
39
|
+
AccountType,
|
|
40
|
+
UserRole,
|
|
41
|
+
UserStatus,
|
|
42
|
+
EventType,
|
|
43
|
+
EventAccess,
|
|
44
|
+
EventVisibility,
|
|
45
|
+
EventStatus,
|
|
46
|
+
TicketHandler,
|
|
47
|
+
MediaType,
|
|
48
|
+
NotificationType,
|
|
49
|
+
ProviderStatus,
|
|
50
|
+
ProviderOnEventStatus,
|
|
51
|
+
OrderStatus,
|
|
52
|
+
PaymentStatus,
|
|
53
|
+
PricingType,
|
|
54
|
+
PricingDuration,
|
|
55
|
+
PaymentMethod,
|
|
56
|
+
TransactionStatus,
|
|
57
|
+
} from '@generated/prisma/enums';
|
|
58
|
+
|
|
59
|
+
// export * from '@generated/prisma/client';
|
|
60
|
+
|
|
41
61
|
//auth
|
|
42
62
|
export * from './auth/auth.guard';
|
|
43
63
|
export * from './auth/auth.module';
|
|
@@ -51,6 +71,8 @@ export * from './cache/cache.service';
|
|
|
51
71
|
export * from './prisma/prisma.module';
|
|
52
72
|
export * from './prisma/prisma.service';
|
|
53
73
|
export * from './prisma/seed';
|
|
74
|
+
|
|
75
|
+
// Utils
|
|
54
76
|
export * from './types';
|
|
55
77
|
export * from './utils';
|
|
56
78
|
export * from './utils/api/endpoints';
|
|
@@ -1,9 +1,43 @@
|
|
|
1
|
-
import { Module, Global } from '@nestjs/common';
|
|
1
|
+
import { Module, Global, DynamicModule, Type } from '@nestjs/common';
|
|
2
2
|
import { PrismaService } from './prisma.service';
|
|
3
3
|
|
|
4
|
+
export interface PrismaModuleAsyncOptions {
|
|
5
|
+
useFactory: (...args: any[]) => Promise<string> | string;
|
|
6
|
+
inject?: any[];
|
|
7
|
+
imports?: any[];
|
|
8
|
+
}
|
|
9
|
+
|
|
4
10
|
@Global()
|
|
5
|
-
@Module({
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
11
|
+
@Module({})
|
|
12
|
+
export class PrismaModule {
|
|
13
|
+
static forRoot(databaseUrl?: string): DynamicModule {
|
|
14
|
+
return {
|
|
15
|
+
module: PrismaModule,
|
|
16
|
+
providers: [
|
|
17
|
+
{
|
|
18
|
+
provide: PrismaService,
|
|
19
|
+
useFactory: () => new PrismaService(databaseUrl),
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
exports: [PrismaService],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
static forRootAsync(options: PrismaModuleAsyncOptions): DynamicModule {
|
|
27
|
+
return {
|
|
28
|
+
module: PrismaModule,
|
|
29
|
+
imports: options.imports || [],
|
|
30
|
+
providers: [
|
|
31
|
+
{
|
|
32
|
+
provide: PrismaService,
|
|
33
|
+
useFactory: async (...args: any[]) => {
|
|
34
|
+
const url = await options.useFactory(...args);
|
|
35
|
+
return new PrismaService(url);
|
|
36
|
+
},
|
|
37
|
+
inject: options.inject || [],
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
exports: [PrismaService],
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -2,14 +2,24 @@ import { Injectable, OnModuleDestroy, OnModuleInit } from '@nestjs/common';
|
|
|
2
2
|
import { PrismaClient } from '@generated/prisma/client';
|
|
3
3
|
import { PrismaPg } from '@prisma/adapter-pg';
|
|
4
4
|
|
|
5
|
-
const adapter = new PrismaPg({
|
|
6
|
-
connectionString: process.env.DATABASE_URL,
|
|
7
|
-
});
|
|
8
|
-
|
|
9
5
|
@Injectable()
|
|
10
6
|
export class PrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy {
|
|
11
|
-
|
|
7
|
+
private static instance: PrismaService;
|
|
8
|
+
private databaseUrl: string;
|
|
9
|
+
|
|
10
|
+
constructor(databaseUrl?: string) {
|
|
11
|
+
const url = databaseUrl || process.env.DATABASE_URL;
|
|
12
|
+
|
|
13
|
+
if (!url) {
|
|
14
|
+
throw new Error('DATABASE_URL is not defined');
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const adapter = new PrismaPg({
|
|
18
|
+
connectionString: url,
|
|
19
|
+
});
|
|
20
|
+
|
|
12
21
|
super({ adapter });
|
|
22
|
+
this.databaseUrl = url;
|
|
13
23
|
}
|
|
14
24
|
|
|
15
25
|
async onModuleInit() {
|
|
@@ -19,4 +29,7 @@ export class PrismaService extends PrismaClient implements OnModuleInit, OnModul
|
|
|
19
29
|
async onModuleDestroy() {
|
|
20
30
|
await this.$disconnect();
|
|
21
31
|
}
|
|
22
|
-
|
|
32
|
+
|
|
33
|
+
// Exposez les modèles explicitement (optionnel, car ils sont déjà accessibles via this)
|
|
34
|
+
// En réalité, this.chatUser, this.report, etc. sont déjà disponibles car PrismaClient les expose
|
|
35
|
+
}
|