veloce-ts 0.2.6 → 0.3.2
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/CHANGELOG.md +501 -240
- package/README.md +141 -1
- package/dist/cjs/src/cli/index.js +125 -74
- package/dist/cjs/src/cli/index.js.map +4 -4
- package/dist/cjs/src/index.js +66 -25
- package/dist/cjs/src/index.js.map +112 -10
- package/dist/cjs/src/middleware/index.js +28 -2
- package/dist/cjs/src/middleware/index.js.map +79 -4
- package/dist/cjs/src/plugins/index.js +49 -23
- package/dist/cjs/src/plugins/index.js.map +74 -4
- package/dist/cjs/src/testing/index.js +30 -4
- package/dist/cjs/src/testing/index.js.map +80 -7
- package/dist/cjs/src/websocket/index.js +3 -3
- package/dist/cjs/src/websocket/index.js.map +1 -1
- package/dist/esm/src/cli/index.js +561 -22
- package/dist/esm/src/cli/index.js.map +8 -4
- package/dist/esm/src/docs/index.js +6 -6
- package/dist/esm/src/docs/index.js.map +10 -3
- package/dist/esm/src/errors/index.js +3 -2
- package/dist/esm/src/errors/index.js.map +7 -3
- package/dist/esm/src/graphql/index.js +82 -2
- package/dist/esm/src/graphql/index.js.map +18 -3
- package/dist/esm/src/index.js +165 -3
- package/dist/esm/src/index.js.map +202 -6
- package/dist/esm/src/middleware/index.js +28 -2
- package/dist/esm/src/middleware/index.js.map +81 -3
- package/dist/esm/src/plugins/index.js +113 -3
- package/dist/esm/src/plugins/index.js.map +131 -4
- package/dist/esm/src/testing/index.js +42 -2
- package/dist/esm/src/testing/index.js.map +97 -7
- package/dist/esm/src/types/index.js +2 -2
- package/dist/esm/src/types/index.js.map +10 -3
- package/dist/esm/src/validation/index.js +2 -2
- package/dist/esm/src/validation/index.js.map +13 -3
- package/dist/esm/src/websocket/index.js +15 -2
- package/dist/esm/src/websocket/index.js.map +9 -4
- package/dist/types/adapters/base.d.ts +10 -2
- package/dist/types/adapters/base.d.ts.map +1 -1
- package/dist/types/adapters/hono.d.ts +2 -2
- package/dist/types/adapters/hono.d.ts.map +1 -1
- package/dist/types/auth/permissions.d.ts +10 -10
- package/dist/types/auth/session.d.ts +2 -2
- package/dist/types/cache/index.d.ts +9 -0
- package/dist/types/cache/index.d.ts.map +1 -0
- package/dist/types/cache/manager.d.ts +75 -0
- package/dist/types/cache/manager.d.ts.map +1 -0
- package/dist/types/cache/memory-store.d.ts +55 -0
- package/dist/types/cache/memory-store.d.ts.map +1 -0
- package/dist/types/cache/redis-store.d.ts +55 -0
- package/dist/types/cache/redis-store.d.ts.map +1 -0
- package/dist/types/cache/types.d.ts +92 -0
- package/dist/types/cache/types.d.ts.map +1 -0
- package/dist/types/cli/commands/new.d.ts.map +1 -1
- package/dist/types/context/request-context.d.ts +66 -0
- package/dist/types/context/request-context.d.ts.map +1 -0
- package/dist/types/core/application.d.ts +11 -0
- package/dist/types/core/application.d.ts.map +1 -1
- package/dist/types/core/router-compiler.d.ts +1 -1
- package/dist/types/core/router-compiler.d.ts.map +1 -1
- package/dist/types/decorators/cache.d.ts +56 -0
- package/dist/types/decorators/cache.d.ts.map +1 -0
- package/dist/types/decorators/params.d.ts +24 -0
- package/dist/types/decorators/params.d.ts.map +1 -1
- package/dist/types/dependencies/container.d.ts +1 -1
- package/dist/types/dependencies/container.d.ts.map +1 -1
- package/dist/types/index.d.ts +7 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/logging/index.d.ts +10 -0
- package/dist/types/logging/index.d.ts.map +1 -0
- package/dist/types/logging/logger.d.ts +25 -0
- package/dist/types/logging/logger.d.ts.map +1 -0
- package/dist/types/logging/middleware.d.ts +15 -0
- package/dist/types/logging/middleware.d.ts.map +1 -0
- package/dist/types/logging/types.d.ts +22 -0
- package/dist/types/logging/types.d.ts.map +1 -0
- package/dist/types/middleware/cache.d.ts +54 -0
- package/dist/types/middleware/cache.d.ts.map +1 -0
- package/dist/types/middleware/index.d.ts +3 -0
- package/dist/types/middleware/index.d.ts.map +1 -1
- package/dist/types/middleware/request-context.d.ts +55 -0
- package/dist/types/middleware/request-context.d.ts.map +1 -0
- package/dist/types/orm/base-repository.d.ts +77 -0
- package/dist/types/orm/base-repository.d.ts.map +1 -0
- package/dist/types/orm/decorators.d.ts +35 -0
- package/dist/types/orm/decorators.d.ts.map +1 -0
- package/dist/types/orm/drizzle/index.d.ts +6 -0
- package/dist/types/orm/drizzle/index.d.ts.map +1 -0
- package/dist/types/orm/drizzle/plugin.d.ts +165 -0
- package/dist/types/orm/drizzle/plugin.d.ts.map +1 -0
- package/dist/types/orm/drizzle/repository.d.ts +61 -0
- package/dist/types/orm/drizzle/repository.d.ts.map +1 -0
- package/dist/types/orm/drizzle/schema-converter.d.ts +53 -0
- package/dist/types/orm/drizzle/schema-converter.d.ts.map +1 -0
- package/dist/types/orm/drizzle/transaction-manager.d.ts +58 -0
- package/dist/types/orm/drizzle/transaction-manager.d.ts.map +1 -0
- package/dist/types/orm/drizzle/types.d.ts +121 -0
- package/dist/types/orm/drizzle/types.d.ts.map +1 -0
- package/dist/types/orm/index.d.ts +16 -0
- package/dist/types/orm/index.d.ts.map +1 -0
- package/dist/types/orm/pagination.d.ts +147 -0
- package/dist/types/orm/pagination.d.ts.map +1 -0
- package/dist/types/orm/prisma/index.d.ts +6 -0
- package/dist/types/orm/prisma/index.d.ts.map +1 -0
- package/dist/types/orm/prisma/plugin.d.ts +68 -0
- package/dist/types/orm/prisma/plugin.d.ts.map +1 -0
- package/dist/types/orm/prisma/repository.d.ts +70 -0
- package/dist/types/orm/prisma/repository.d.ts.map +1 -0
- package/dist/types/orm/prisma/schema-generator.d.ts +45 -0
- package/dist/types/orm/prisma/schema-generator.d.ts.map +1 -0
- package/dist/types/orm/prisma/transaction-manager.d.ts +32 -0
- package/dist/types/orm/prisma/transaction-manager.d.ts.map +1 -0
- package/dist/types/orm/prisma/types.d.ts +67 -0
- package/dist/types/orm/prisma/types.d.ts.map +1 -0
- package/dist/types/orm/query-builder.d.ts +129 -0
- package/dist/types/orm/query-builder.d.ts.map +1 -0
- package/dist/types/orm/repository-factory.d.ts +130 -0
- package/dist/types/orm/repository-factory.d.ts.map +1 -0
- package/dist/types/orm/transaction-events.d.ts +122 -0
- package/dist/types/orm/transaction-events.d.ts.map +1 -0
- package/dist/types/orm/transaction-interceptor.d.ts +30 -0
- package/dist/types/orm/transaction-interceptor.d.ts.map +1 -0
- package/dist/types/orm/transaction-manager.d.ts +64 -0
- package/dist/types/orm/transaction-manager.d.ts.map +1 -0
- package/dist/types/orm/transaction-plugin.d.ts +117 -0
- package/dist/types/orm/transaction-plugin.d.ts.map +1 -0
- package/dist/types/orm/transaction-propagation.d.ts +49 -0
- package/dist/types/orm/transaction-propagation.d.ts.map +1 -0
- package/dist/types/orm/typeorm/decorators.d.ts +40 -0
- package/dist/types/orm/typeorm/decorators.d.ts.map +1 -0
- package/dist/types/orm/typeorm/index.d.ts +6 -0
- package/dist/types/orm/typeorm/index.d.ts.map +1 -0
- package/dist/types/orm/typeorm/plugin.d.ts +100 -0
- package/dist/types/orm/typeorm/plugin.d.ts.map +1 -0
- package/dist/types/orm/typeorm/repository.d.ts +58 -0
- package/dist/types/orm/typeorm/repository.d.ts.map +1 -0
- package/dist/types/orm/typeorm/transaction-manager.d.ts +48 -0
- package/dist/types/orm/typeorm/transaction-manager.d.ts.map +1 -0
- package/dist/types/orm/typeorm/types.d.ts +139 -0
- package/dist/types/orm/typeorm/types.d.ts.map +1 -0
- package/dist/types/plugins/health.d.ts +75 -0
- package/dist/types/plugins/health.d.ts.map +1 -0
- package/dist/types/plugins/index.d.ts +2 -0
- package/dist/types/plugins/index.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +15 -2
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/websocket/index.d.ts +1 -1
- package/dist/types/websocket/index.d.ts.map +1 -1
- package/package.json +22 -2
- package/dist/esm/chunk-2100y16g.js +0 -5
- package/dist/esm/chunk-2100y16g.js.map +0 -10
- package/dist/esm/chunk-5q75d71c.js +0 -4
- package/dist/esm/chunk-5q75d71c.js.map +0 -16
- package/dist/esm/chunk-8dpc6an2.js +0 -7
- package/dist/esm/chunk-8dpc6an2.js.map +0 -10
- package/dist/esm/chunk-9v7atckx.js +0 -5
- package/dist/esm/chunk-9v7atckx.js.map +0 -10
- package/dist/esm/chunk-bvstdn0t.js +0 -60
- package/dist/esm/chunk-bvstdn0t.js.map +0 -10
- package/dist/esm/chunk-ctwpr5gr.js +0 -430
- package/dist/esm/chunk-ctwpr5gr.js.map +0 -10
- package/dist/esm/chunk-dtw2tbsd.js +0 -5
- package/dist/esm/chunk-dtw2tbsd.js.map +0 -12
- package/dist/esm/chunk-ef0vfd27.js +0 -72
- package/dist/esm/chunk-ef0vfd27.js.map +0 -13
- package/dist/esm/chunk-k66rn4fj.js +0 -18
- package/dist/esm/chunk-k66rn4fj.js.map +0 -10
- package/dist/esm/chunk-mky5qqg0.js +0 -5
- package/dist/esm/chunk-mky5qqg0.js.map +0 -10
- package/dist/esm/chunk-mznkhz9c.js +0 -5
- package/dist/esm/chunk-mznkhz9c.js.map +0 -12
- package/dist/esm/chunk-s5z0wb7e.js +0 -5
- package/dist/esm/chunk-s5z0wb7e.js.map +0 -10
- package/dist/esm/chunk-vh4sxcpe.js +0 -6
- package/dist/esm/chunk-vh4sxcpe.js.map +0 -10
- package/dist/esm/chunk-xa333k40.js +0 -7
- package/dist/esm/chunk-xa333k40.js.map +0 -10
- package/dist/esm/chunk-y262e56g.js +0 -5
- package/dist/esm/chunk-y262e56g.js.map +0 -9
- package/dist/esm/chunk-yq3gf9ts.js +0 -5
- package/dist/esm/chunk-yq3gf9ts.js.map +0 -10
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { Plugin } from '../core/plugin';
|
|
2
|
+
import { VeloceTS } from '../core/application';
|
|
3
|
+
/**
|
|
4
|
+
* Transaction plugin configuration
|
|
5
|
+
*/
|
|
6
|
+
export interface TransactionPluginConfig {
|
|
7
|
+
enableLogging?: boolean;
|
|
8
|
+
enableMetrics?: boolean;
|
|
9
|
+
defaultIsolation?: 'READ_UNCOMMITTED' | 'READ_COMMITTED' | 'REPEATABLE_READ' | 'SERIALIZABLE';
|
|
10
|
+
defaultTimeout?: number;
|
|
11
|
+
customTransactionManager?: any;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Transaction management plugin for FastAPI-TS
|
|
15
|
+
*/
|
|
16
|
+
export declare class TransactionPlugin implements Plugin {
|
|
17
|
+
name: string;
|
|
18
|
+
version: string;
|
|
19
|
+
private config;
|
|
20
|
+
private metricsListener?;
|
|
21
|
+
constructor(config?: TransactionPluginConfig);
|
|
22
|
+
install(app: VeloceTS): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Set up transaction manager
|
|
25
|
+
*/
|
|
26
|
+
private setupTransactionManager;
|
|
27
|
+
/**
|
|
28
|
+
* Set up event listeners
|
|
29
|
+
*/
|
|
30
|
+
private setupEventListeners;
|
|
31
|
+
/**
|
|
32
|
+
* Register transaction utilities in DI container
|
|
33
|
+
*/
|
|
34
|
+
private registerTransactionUtilities;
|
|
35
|
+
/**
|
|
36
|
+
* Get transaction metrics
|
|
37
|
+
*/
|
|
38
|
+
getMetrics(): {
|
|
39
|
+
totalTransactions: number;
|
|
40
|
+
committedTransactions: number;
|
|
41
|
+
rolledBackTransactions: number;
|
|
42
|
+
averageDuration: number;
|
|
43
|
+
totalDuration: number;
|
|
44
|
+
} | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Reset transaction metrics
|
|
47
|
+
*/
|
|
48
|
+
resetMetrics(): void;
|
|
49
|
+
/**
|
|
50
|
+
* Add custom event listener
|
|
51
|
+
*/
|
|
52
|
+
addEventListener(listener: any): void;
|
|
53
|
+
/**
|
|
54
|
+
* Remove event listener
|
|
55
|
+
*/
|
|
56
|
+
removeEventListener(listener: any): void;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Helper function to create transaction plugin
|
|
60
|
+
*/
|
|
61
|
+
export declare function createTransactionPlugin(config?: TransactionPluginConfig): TransactionPlugin;
|
|
62
|
+
/**
|
|
63
|
+
* Transaction service for manual transaction management
|
|
64
|
+
*/
|
|
65
|
+
export declare class TransactionService {
|
|
66
|
+
private transactionManager;
|
|
67
|
+
constructor(transactionManager: any);
|
|
68
|
+
/**
|
|
69
|
+
* Execute callback in transaction
|
|
70
|
+
*/
|
|
71
|
+
executeInTransaction<T>(callback: () => Promise<T>): Promise<T>;
|
|
72
|
+
/**
|
|
73
|
+
* Create savepoint
|
|
74
|
+
*/
|
|
75
|
+
createSavepoint(name: string): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Rollback to savepoint
|
|
78
|
+
*/
|
|
79
|
+
rollbackToSavepoint(name: string): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Mark current transaction for rollback only
|
|
82
|
+
*/
|
|
83
|
+
setRollbackOnly(): void;
|
|
84
|
+
/**
|
|
85
|
+
* Check if currently in transaction
|
|
86
|
+
*/
|
|
87
|
+
isInTransaction(): boolean;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Transaction template for programmatic transaction management
|
|
91
|
+
*/
|
|
92
|
+
export declare class TransactionTemplate {
|
|
93
|
+
private transactionManager;
|
|
94
|
+
private defaultOptions?;
|
|
95
|
+
constructor(transactionManager: any, defaultOptions?: {
|
|
96
|
+
isolation?: string;
|
|
97
|
+
timeout?: number;
|
|
98
|
+
readOnly?: boolean;
|
|
99
|
+
} | undefined);
|
|
100
|
+
/**
|
|
101
|
+
* Execute callback with transaction template
|
|
102
|
+
*/
|
|
103
|
+
execute<T>(callback: () => Promise<T>, options?: {
|
|
104
|
+
isolation?: string;
|
|
105
|
+
timeout?: number;
|
|
106
|
+
readOnly?: boolean;
|
|
107
|
+
}): Promise<T>;
|
|
108
|
+
/**
|
|
109
|
+
* Execute callback with read-only transaction
|
|
110
|
+
*/
|
|
111
|
+
executeReadOnly<T>(callback: () => Promise<T>): Promise<T>;
|
|
112
|
+
/**
|
|
113
|
+
* Execute callback with specific isolation level
|
|
114
|
+
*/
|
|
115
|
+
executeWithIsolation<T>(callback: () => Promise<T>, isolation: string): Promise<T>;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=transaction-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-plugin.d.ts","sourceRoot":"","sources":["../../../src/orm/transaction-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAK/C;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,kBAAkB,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,cAAc,CAAC;IAC9F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wBAAwB,CAAC,EAAE,GAAG,CAAC;CAChC;AAED;;GAEG;AACH,qBAAa,iBAAkB,YAAW,MAAM;IAC9C,IAAI,SAAiB;IACrB,OAAO,SAAW;IAElB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,eAAe,CAAC,CAA6B;gBAEzC,MAAM,CAAC,EAAE,uBAAuB;IAUtC,OAAO,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3C;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAS/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IA4DpC;;OAEG;IACH,UAAU;;;;;;;IAIV;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI;IAIrC;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI;CAGzC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,CAAC,EAAE,uBAAuB,GAAG,iBAAiB,CAE3F;AAED;;GAEG;AACH,qBAAa,kBAAkB;IACjB,OAAO,CAAC,kBAAkB;gBAAlB,kBAAkB,EAAE,GAAG;IAE3C;;OAEG;IACG,oBAAoB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmBrE;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD;;OAEG;IACG,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD;;OAEG;IACH,eAAe,IAAI,IAAI;IAKvB;;OAEG;IACH,eAAe,IAAI,OAAO;CAK3B;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,cAAc,CAAC;gBADf,kBAAkB,EAAE,GAAG,EACvB,cAAc,CAAC,EAAE;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,YAAA;IAGH;;OAEG;IACG,OAAO,CAAC,CAAC,EACb,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC1B,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,GACA,OAAO,CAAC,CAAC,CAAC;IAoBb;;OAEG;IACG,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhE;;OAEG;IACG,oBAAoB,CAAC,CAAC,EAC1B,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,CAAC,CAAC;CAGd"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { TransactionContext, TransactionMetadata } from './transaction-manager';
|
|
2
|
+
export declare enum TransactionPropagation {
|
|
3
|
+
REQUIRED = "REQUIRED",// Join existing transaction or create new one
|
|
4
|
+
REQUIRES_NEW = "REQUIRES_NEW",// Always create new transaction
|
|
5
|
+
SUPPORTS = "SUPPORTS",// Join existing transaction if available, otherwise execute without transaction
|
|
6
|
+
NOT_SUPPORTED = "NOT_SUPPORTED",// Execute without transaction, suspend existing if present
|
|
7
|
+
MANDATORY = "MANDATORY",// Must have existing transaction, throw error if none
|
|
8
|
+
NEVER = "NEVER"
|
|
9
|
+
}
|
|
10
|
+
export interface EnhancedTransactionMetadata extends TransactionMetadata {
|
|
11
|
+
propagation?: TransactionPropagation;
|
|
12
|
+
rollbackFor?: (new (...args: any[]) => Error)[];
|
|
13
|
+
noRollbackFor?: (new (...args: any[]) => Error)[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Transaction propagation manager
|
|
17
|
+
*/
|
|
18
|
+
export declare class TransactionPropagationManager {
|
|
19
|
+
/**
|
|
20
|
+
* Determine if a new transaction should be started based on propagation
|
|
21
|
+
*/
|
|
22
|
+
shouldStartNewTransaction(propagation: TransactionPropagation, existingTransaction?: TransactionContext): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Determine if existing transaction should be suspended
|
|
25
|
+
*/
|
|
26
|
+
shouldSuspendTransaction(propagation: TransactionPropagation, existingTransaction?: TransactionContext): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Determine if method should execute within transaction
|
|
29
|
+
*/
|
|
30
|
+
shouldExecuteInTransaction(propagation: TransactionPropagation, existingTransaction?: TransactionContext): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Determine if error should cause rollback
|
|
33
|
+
*/
|
|
34
|
+
shouldRollbackForError(error: Error, metadata: EnhancedTransactionMetadata): boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Enhanced @Transactional decorator with propagation support
|
|
38
|
+
*/
|
|
39
|
+
export declare function TransactionalWithPropagation(options?: EnhancedTransactionMetadata): MethodDecorator;
|
|
40
|
+
/**
|
|
41
|
+
* Specific propagation decorators for convenience
|
|
42
|
+
*/
|
|
43
|
+
export declare function Required(options?: Omit<EnhancedTransactionMetadata, 'propagation'>): MethodDecorator;
|
|
44
|
+
export declare function RequiresNew(options?: Omit<EnhancedTransactionMetadata, 'propagation'>): MethodDecorator;
|
|
45
|
+
export declare function Supports(options?: Omit<EnhancedTransactionMetadata, 'propagation'>): MethodDecorator;
|
|
46
|
+
export declare function NotSupported(options?: Omit<EnhancedTransactionMetadata, 'propagation'>): MethodDecorator;
|
|
47
|
+
export declare function Mandatory(options?: Omit<EnhancedTransactionMetadata, 'propagation'>): MethodDecorator;
|
|
48
|
+
export declare function Never(options?: Omit<EnhancedTransactionMetadata, 'propagation'>): MethodDecorator;
|
|
49
|
+
//# sourceMappingURL=transaction-propagation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-propagation.d.ts","sourceRoot":"","sources":["../../../src/orm/transaction-propagation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGhF,oBAAY,sBAAsB;IAChC,QAAQ,aAAa,CAAY,8CAA8C;IAC/E,YAAY,iBAAiB,CAAI,gCAAgC;IACjE,QAAQ,aAAa,CAAY,gFAAgF;IACjH,aAAa,kBAAkB,CAAE,2DAA2D;IAC5F,SAAS,cAAc,CAAU,sDAAsD;IACvF,KAAK,UAAU;CAChB;AAGD,MAAM,WAAW,2BAA4B,SAAQ,mBAAmB;IACtE,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,WAAW,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;IAChD,aAAa,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;CACnD;AAED;;GAEG;AACH,qBAAa,6BAA6B;IACxC;;OAEG;IACH,yBAAyB,CACvB,WAAW,EAAE,sBAAsB,EACnC,mBAAmB,CAAC,EAAE,kBAAkB,GACvC,OAAO;IA+BV;;OAEG;IACH,wBAAwB,CACtB,WAAW,EAAE,sBAAsB,EACnC,mBAAmB,CAAC,EAAE,kBAAkB,GACvC,OAAO;IAIV;;OAEG;IACH,0BAA0B,CACxB,WAAW,EAAE,sBAAsB,EACnC,mBAAmB,CAAC,EAAE,kBAAkB,GACvC,OAAO;IAmBV;;OAEG;IACH,sBAAsB,CACpB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,2BAA2B,GACpC,OAAO;CAwBX;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,CAAC,EAAE,2BAA2B,GAAG,eAAe,CAgCnG;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,aAAa,CAAC,GAAG,eAAe,CAEpG;AAED,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,aAAa,CAAC,GAAG,eAAe,CAEvG;AAED,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,aAAa,CAAC,GAAG,eAAe,CAEpG;AAED,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,aAAa,CAAC,GAAG,eAAe,CAExG;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,aAAa,CAAC,GAAG,eAAe,CAErG;AAED,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,aAAa,CAAC,GAAG,eAAe,CAEjG"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
/**
|
|
3
|
+
* TypeORM-specific decorators for FastAPI-TS integration
|
|
4
|
+
*/
|
|
5
|
+
export interface TypeORMEntityMetadata {
|
|
6
|
+
name?: string;
|
|
7
|
+
tableName?: string;
|
|
8
|
+
schema?: string;
|
|
9
|
+
database?: string;
|
|
10
|
+
synchronize?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface TypeORMRepositoryMetadata {
|
|
13
|
+
entity: any;
|
|
14
|
+
dataSource?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Enhanced Entity decorator for TypeORM integration
|
|
18
|
+
*/
|
|
19
|
+
export declare function TypeORMEntity(options?: TypeORMEntityMetadata): ClassDecorator;
|
|
20
|
+
/**
|
|
21
|
+
* TypeORM Repository decorator for dependency injection
|
|
22
|
+
*/
|
|
23
|
+
export declare function TypeORMRepository(entity: any, dataSource?: string): PropertyDecorator;
|
|
24
|
+
/**
|
|
25
|
+
* InjectDataSource decorator for injecting TypeORM DataSource
|
|
26
|
+
*/
|
|
27
|
+
export declare function InjectDataSource(name?: string): PropertyDecorator;
|
|
28
|
+
/**
|
|
29
|
+
* InjectEntityManager decorator for injecting TypeORM EntityManager
|
|
30
|
+
*/
|
|
31
|
+
export declare function InjectEntityManager(dataSource?: string): PropertyDecorator;
|
|
32
|
+
/**
|
|
33
|
+
* Migration decorator for marking classes as migrations
|
|
34
|
+
*/
|
|
35
|
+
export declare function Migration(timestamp: number): ClassDecorator;
|
|
36
|
+
/**
|
|
37
|
+
* Subscriber decorator for marking classes as entity subscribers
|
|
38
|
+
*/
|
|
39
|
+
export declare function Subscriber(): ClassDecorator;
|
|
40
|
+
//# sourceMappingURL=decorators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../../src/orm/typeorm/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B;;GAEG;AAGH,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAGD,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,GAAG,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,cAAc,CAY7E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,iBAAiB,CASrF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,iBAAiB,CASjE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAS1E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAS3D;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,cAAc,CAQ3C"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { TypeORMPlugin, createTypeORMPlugin, Migration } from './plugin';
|
|
2
|
+
export { TypeORMRepository } from './repository';
|
|
3
|
+
export { TypeORMTransactionManager } from './transaction-manager';
|
|
4
|
+
export { TypeORMEntity } from './decorators';
|
|
5
|
+
export type { TypeORMConfig, TypeORMEntityMetadata, TypeORMColumnMetadata, TypeORMRelationMetadata, TypeORMRepositoryOptions } from './types';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/orm/typeorm/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Plugin } from '../../core/plugin';
|
|
2
|
+
import { VeloceTS } from '../../core/application';
|
|
3
|
+
import { TypeORMConfig, DataSourceLike, TypeORMEntityMetadata } from './types';
|
|
4
|
+
import { TypeORMRepository } from './repository';
|
|
5
|
+
import { TypeORMTransactionManager } from './transaction-manager';
|
|
6
|
+
/**
|
|
7
|
+
* TypeORM integration plugin for FastAPI-TS
|
|
8
|
+
*/
|
|
9
|
+
export declare class TypeORMPlugin implements Plugin {
|
|
10
|
+
name: string;
|
|
11
|
+
version: string;
|
|
12
|
+
private dataSource;
|
|
13
|
+
private config;
|
|
14
|
+
private transactionManager;
|
|
15
|
+
private entities;
|
|
16
|
+
constructor(dataSource: DataSourceLike, config?: Partial<TypeORMConfig>);
|
|
17
|
+
install(app: VeloceTS): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Extract metadata from TypeORM entities
|
|
20
|
+
*/
|
|
21
|
+
private extractEntityMetadata;
|
|
22
|
+
/**
|
|
23
|
+
* Register repository factory in DI container
|
|
24
|
+
*/
|
|
25
|
+
private registerRepositoryFactory;
|
|
26
|
+
/**
|
|
27
|
+
* Register migration and seeding utilities
|
|
28
|
+
*/
|
|
29
|
+
private registerMigrationUtilities;
|
|
30
|
+
/**
|
|
31
|
+
* Register shutdown hook to close data source
|
|
32
|
+
*/
|
|
33
|
+
private registerShutdownHook;
|
|
34
|
+
/**
|
|
35
|
+
* Get entity metadata
|
|
36
|
+
*/
|
|
37
|
+
getEntity(name: string): TypeORMEntityMetadata | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Get all entities
|
|
40
|
+
*/
|
|
41
|
+
getEntities(): Map<string, TypeORMEntityMetadata>;
|
|
42
|
+
/**
|
|
43
|
+
* Create a repository for a specific entity
|
|
44
|
+
*/
|
|
45
|
+
createRepository<T>(entity: any, zodSchema?: any): TypeORMRepository<T>;
|
|
46
|
+
/**
|
|
47
|
+
* Get the TypeORM data source
|
|
48
|
+
*/
|
|
49
|
+
getDataSource(): DataSourceLike;
|
|
50
|
+
/**
|
|
51
|
+
* Get the transaction manager
|
|
52
|
+
*/
|
|
53
|
+
getTransactionManager(): TypeORMTransactionManager;
|
|
54
|
+
/**
|
|
55
|
+
* Run migrations
|
|
56
|
+
*/
|
|
57
|
+
runMigrations(): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Revert last migration
|
|
60
|
+
*/
|
|
61
|
+
revertMigration(): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Synchronize database schema (use with caution in production)
|
|
64
|
+
*/
|
|
65
|
+
synchronize(): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Drop database schema (use with extreme caution)
|
|
68
|
+
*/
|
|
69
|
+
dropSchema(): Promise<void>;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Helper function to create TypeORM plugin
|
|
73
|
+
*/
|
|
74
|
+
export declare function createTypeORMPlugin(dataSource: DataSourceLike, config?: Partial<TypeORMConfig>): TypeORMPlugin;
|
|
75
|
+
/**
|
|
76
|
+
* Migration base class
|
|
77
|
+
*/
|
|
78
|
+
export declare abstract class Migration {
|
|
79
|
+
abstract up(queryRunner: any): Promise<void>;
|
|
80
|
+
abstract down(queryRunner: any): Promise<void>;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Seeder base class
|
|
84
|
+
*/
|
|
85
|
+
export declare abstract class Seeder {
|
|
86
|
+
abstract run(dataSource: DataSourceLike): Promise<void>;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Entity subscriber base class
|
|
90
|
+
*/
|
|
91
|
+
export declare abstract class EntitySubscriber {
|
|
92
|
+
abstract listenTo(): any;
|
|
93
|
+
beforeInsert?(event: any): Promise<void> | void;
|
|
94
|
+
afterInsert?(event: any): Promise<void> | void;
|
|
95
|
+
beforeUpdate?(event: any): Promise<void> | void;
|
|
96
|
+
afterUpdate?(event: any): Promise<void> | void;
|
|
97
|
+
beforeRemove?(event: any): Promise<void> | void;
|
|
98
|
+
afterRemove?(event: any): Promise<void> | void;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/orm/typeorm/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { BaseRepository, FindOptions, FilterOptions, SortOptions, PaginationOptions, PaginatedResult } from '../base-repository';
|
|
2
|
+
import { TypeORMRepositoryOptions, DataSourceLike, RepositoryLike } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* TypeORM-specific repository implementation
|
|
5
|
+
*/
|
|
6
|
+
export declare class TypeORMRepository<T, ID = string | number> extends BaseRepository<T, ID> {
|
|
7
|
+
protected dataSource: DataSourceLike;
|
|
8
|
+
protected repository: RepositoryLike<T>;
|
|
9
|
+
protected entity: any;
|
|
10
|
+
constructor(options: TypeORMRepositoryOptions<T>);
|
|
11
|
+
create(data: Partial<T>): Promise<T>;
|
|
12
|
+
findById(id: ID): Promise<T | null>;
|
|
13
|
+
findOne(options: FindOptions): Promise<T | null>;
|
|
14
|
+
findMany(options?: FindOptions): Promise<T[]>;
|
|
15
|
+
update(id: ID, data: Partial<T>): Promise<T>;
|
|
16
|
+
delete(id: ID): Promise<boolean>;
|
|
17
|
+
createMany(data: Partial<T>[]): Promise<T[]>;
|
|
18
|
+
updateMany(where: FilterOptions, data: Partial<T>): Promise<number>;
|
|
19
|
+
deleteMany(where: FilterOptions): Promise<number>;
|
|
20
|
+
count(where?: FilterOptions): Promise<number>;
|
|
21
|
+
exists(where: FilterOptions): Promise<boolean>;
|
|
22
|
+
findPaginated(options: FindOptions & {
|
|
23
|
+
pagination: Required<PaginationOptions>;
|
|
24
|
+
}): Promise<PaginatedResult<T>>;
|
|
25
|
+
withTransaction<R>(callback: (repo: this) => Promise<R>): Promise<R>;
|
|
26
|
+
private buildTypeORMFindOptions;
|
|
27
|
+
protected buildWhereClause(where: FilterOptions): any;
|
|
28
|
+
protected buildOrderByClause(orderBy: SortOptions | SortOptions[]): any;
|
|
29
|
+
/**
|
|
30
|
+
* Create a query builder for complex queries
|
|
31
|
+
*/
|
|
32
|
+
createQueryBuilder(alias?: string): import("./types").QueryBuilderLike<T>;
|
|
33
|
+
/**
|
|
34
|
+
* Execute raw SQL query
|
|
35
|
+
*/
|
|
36
|
+
query(sql: string, parameters?: any[]): Promise<any>;
|
|
37
|
+
/**
|
|
38
|
+
* Soft delete (if entity supports it)
|
|
39
|
+
*/
|
|
40
|
+
softDelete(id: ID): Promise<boolean>;
|
|
41
|
+
/**
|
|
42
|
+
* Restore soft deleted entity
|
|
43
|
+
*/
|
|
44
|
+
restore(id: ID): Promise<boolean>;
|
|
45
|
+
/**
|
|
46
|
+
* Find with relations
|
|
47
|
+
*/
|
|
48
|
+
findWithRelations(id: ID, relations: string[]): Promise<T | null>;
|
|
49
|
+
/**
|
|
50
|
+
* Bulk insert with better performance
|
|
51
|
+
*/
|
|
52
|
+
bulkInsert(data: Partial<T>[]): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Upsert operation (insert or update)
|
|
55
|
+
*/
|
|
56
|
+
upsert(data: Partial<T>, conflictColumns: string[]): Promise<T>;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../src/orm/typeorm/repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { BaseTransactionManager, TransactionContext, TransactionMetadata } from '../transaction-manager';
|
|
2
|
+
import { DataSourceLike, EntityManagerLike, QueryRunnerLike } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* TypeORM-specific transaction manager
|
|
5
|
+
*/
|
|
6
|
+
export declare class TypeORMTransactionManager extends BaseTransactionManager {
|
|
7
|
+
private dataSource;
|
|
8
|
+
private activeQueryRunners;
|
|
9
|
+
constructor(dataSource: DataSourceLike);
|
|
10
|
+
begin(options?: TransactionMetadata): Promise<TransactionContext>;
|
|
11
|
+
commit(context: TransactionContext): Promise<void>;
|
|
12
|
+
rollback(context: TransactionContext): Promise<void>;
|
|
13
|
+
savepoint(context: TransactionContext, name: string): Promise<void>;
|
|
14
|
+
rollbackToSavepoint(context: TransactionContext, name: string): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Execute a function within a TypeORM transaction
|
|
17
|
+
*/
|
|
18
|
+
executeInTransaction<T>(callback: (manager: EntityManagerLike) => Promise<T>, options?: TransactionMetadata): Promise<T>;
|
|
19
|
+
/**
|
|
20
|
+
* Enhanced transaction handler that integrates with TypeORM's transaction system
|
|
21
|
+
*/
|
|
22
|
+
handleTransactional<T>(target: any, propertyKey: string, args: any[], originalMethod: Function, context?: any): Promise<T>;
|
|
23
|
+
/**
|
|
24
|
+
* Handle nested transactions using savepoints
|
|
25
|
+
*/
|
|
26
|
+
protected handleNestedTransaction<T>(parentTransaction: TransactionContext, target: any, args: any[], originalMethod: Function): Promise<T>;
|
|
27
|
+
/**
|
|
28
|
+
* Inject transaction manager into repositories
|
|
29
|
+
*/
|
|
30
|
+
private injectTransactionManager;
|
|
31
|
+
/**
|
|
32
|
+
* Create a repository with transaction support
|
|
33
|
+
*/
|
|
34
|
+
createTransactionalRepository<T>(repositoryClass: new (...args: any[]) => T, options: any): T;
|
|
35
|
+
/**
|
|
36
|
+
* Get query runner for a transaction context
|
|
37
|
+
*/
|
|
38
|
+
getQueryRunner(context: TransactionContext): QueryRunnerLike | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Check if a transaction is active
|
|
41
|
+
*/
|
|
42
|
+
isTransactionActive(context: TransactionContext): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Get the data source
|
|
45
|
+
*/
|
|
46
|
+
getDataSource(): DataSourceLike;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=transaction-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-manager.d.ts","sourceRoot":"","sources":["../../../../src/orm/typeorm/transaction-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACzG,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE7E;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,sBAAsB;IACnE,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,kBAAkB,CAAsC;gBAEpD,UAAU,EAAE,cAAc;IAKhC,KAAK,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAajE,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBlD,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBpD,SAAS,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnE,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBnF;;OAEG;IACG,oBAAoB,CAAC,CAAC,EAC1B,QAAQ,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,EACpD,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,CAAC,CAAC;IAMb;;OAEG;IACG,mBAAmB,CAAC,CAAC,EACzB,MAAM,EAAE,GAAG,EACX,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,GAAG,EAAE,EACX,cAAc,EAAE,QAAQ,EACxB,OAAO,CAAC,EAAE,GAAG,GACZ,OAAO,CAAC,CAAC,CAAC;IA+Cb;;OAEG;cACa,uBAAuB,CAAC,CAAC,EACvC,iBAAiB,EAAE,kBAAkB,EACrC,MAAM,EAAE,GAAG,EACX,IAAI,EAAE,GAAG,EAAE,EACX,cAAc,EAAE,QAAQ,GACvB,OAAO,CAAC,CAAC,CAAC;IAcb;;OAEG;YACW,wBAAwB;IAwCtC;;OAEG;IACH,6BAA6B,CAAC,CAAC,EAC7B,eAAe,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAC1C,OAAO,EAAE,GAAG,GACX,CAAC;IA0BJ;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,eAAe,GAAG,SAAS;IAIxE;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO;IAKzD;;OAEG;IACH,aAAa,IAAI,cAAc;CAGhC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export interface TypeORMConfig {
|
|
3
|
+
type: 'mysql' | 'postgres' | 'sqlite' | 'mariadb' | 'mssql' | 'oracle' | 'mongodb';
|
|
4
|
+
host?: string;
|
|
5
|
+
port?: number;
|
|
6
|
+
username?: string;
|
|
7
|
+
password?: string;
|
|
8
|
+
database?: string;
|
|
9
|
+
url?: string;
|
|
10
|
+
synchronize?: boolean;
|
|
11
|
+
logging?: boolean | 'all' | ('query' | 'error' | 'schema' | 'warn' | 'info' | 'log')[];
|
|
12
|
+
entities?: string[] | Function[];
|
|
13
|
+
migrations?: string[];
|
|
14
|
+
subscribers?: string[];
|
|
15
|
+
migrationsRun?: boolean;
|
|
16
|
+
dropSchema?: boolean;
|
|
17
|
+
cache?: boolean;
|
|
18
|
+
ssl?: boolean | any;
|
|
19
|
+
extra?: any;
|
|
20
|
+
}
|
|
21
|
+
export interface TypeORMEntityMetadata {
|
|
22
|
+
name: string;
|
|
23
|
+
tableName: string;
|
|
24
|
+
columns: TypeORMColumnMetadata[];
|
|
25
|
+
relations: TypeORMRelationMetadata[];
|
|
26
|
+
zodSchema?: z.ZodSchema;
|
|
27
|
+
}
|
|
28
|
+
export interface TypeORMColumnMetadata {
|
|
29
|
+
propertyName: string;
|
|
30
|
+
type: string;
|
|
31
|
+
isPrimary: boolean;
|
|
32
|
+
isGenerated: boolean;
|
|
33
|
+
isNullable: boolean;
|
|
34
|
+
isUnique: boolean;
|
|
35
|
+
length?: number;
|
|
36
|
+
default?: any;
|
|
37
|
+
}
|
|
38
|
+
export interface TypeORMRelationMetadata {
|
|
39
|
+
propertyName: string;
|
|
40
|
+
type: 'one-to-one' | 'one-to-many' | 'many-to-one' | 'many-to-many';
|
|
41
|
+
target: string;
|
|
42
|
+
inverseSide?: string;
|
|
43
|
+
joinColumn?: string;
|
|
44
|
+
joinTable?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface DataSourceLike {
|
|
47
|
+
initialize(): Promise<void>;
|
|
48
|
+
destroy(): Promise<void>;
|
|
49
|
+
isInitialized: boolean;
|
|
50
|
+
manager: EntityManagerLike;
|
|
51
|
+
transaction<T>(runInTransaction: (manager: EntityManagerLike) => Promise<T>): Promise<T>;
|
|
52
|
+
createQueryRunner(): QueryRunnerLike;
|
|
53
|
+
getRepository<T>(target: any): RepositoryLike<T>;
|
|
54
|
+
getMetadata(target: any): any;
|
|
55
|
+
runMigrations?(): Promise<void>;
|
|
56
|
+
undoLastMigration?(): Promise<void>;
|
|
57
|
+
synchronize?(): Promise<void>;
|
|
58
|
+
dropDatabase?(): Promise<void>;
|
|
59
|
+
entityMetadatas?: any[];
|
|
60
|
+
}
|
|
61
|
+
export interface EntityManagerLike {
|
|
62
|
+
save<T>(entity: T): Promise<T>;
|
|
63
|
+
save<T>(entities: T[]): Promise<T[]>;
|
|
64
|
+
remove<T>(entity: T): Promise<T>;
|
|
65
|
+
remove<T>(entities: T[]): Promise<T[]>;
|
|
66
|
+
find<T>(entityClass: any, options?: any): Promise<T[]>;
|
|
67
|
+
findOne<T>(entityClass: any, options?: any): Promise<T | null>;
|
|
68
|
+
findOneBy<T>(entityClass: any, where: any): Promise<T | null>;
|
|
69
|
+
count<T>(entityClass: any, options?: any): Promise<number>;
|
|
70
|
+
create<T>(entityClass: any, entityLike?: any): T;
|
|
71
|
+
merge<T>(entityClass: any, mergeIntoEntity: T, ...entityLikes: any[]): T;
|
|
72
|
+
query(query: string, parameters?: any[]): Promise<any>;
|
|
73
|
+
transaction<T>(runInTransaction: (manager: EntityManagerLike) => Promise<T>): Promise<T>;
|
|
74
|
+
getRepository<T>(target: any): RepositoryLike<T>;
|
|
75
|
+
connection?: {
|
|
76
|
+
entityMetadatas?: any[];
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export interface RepositoryLike<T> {
|
|
80
|
+
save(entity: T): Promise<T>;
|
|
81
|
+
save(entities: T[]): Promise<T[]>;
|
|
82
|
+
remove(entity: T): Promise<T>;
|
|
83
|
+
remove(entities: T[]): Promise<T[]>;
|
|
84
|
+
find(options?: any): Promise<T[]>;
|
|
85
|
+
findOne(options?: any): Promise<T | null>;
|
|
86
|
+
findOneBy(where: any): Promise<T | null>;
|
|
87
|
+
count(options?: any): Promise<number>;
|
|
88
|
+
create(entityLike?: any): T;
|
|
89
|
+
merge(mergeIntoEntity: T, ...entityLikes: any[]): T;
|
|
90
|
+
createQueryBuilder(alias?: string): QueryBuilderLike<T>;
|
|
91
|
+
delete(criteria: any): Promise<{
|
|
92
|
+
affected?: number;
|
|
93
|
+
}>;
|
|
94
|
+
update(criteria: any, partialEntity: any): Promise<{
|
|
95
|
+
affected?: number;
|
|
96
|
+
}>;
|
|
97
|
+
}
|
|
98
|
+
export interface QueryBuilderLike<T> {
|
|
99
|
+
select(selection?: string | string[]): this;
|
|
100
|
+
where(where: string, parameters?: any): this;
|
|
101
|
+
andWhere(where: string, parameters?: any): this;
|
|
102
|
+
orWhere(where: string, parameters?: any): this;
|
|
103
|
+
orderBy(sort: string, order?: 'ASC' | 'DESC'): this;
|
|
104
|
+
addOrderBy(sort: string, order?: 'ASC' | 'DESC'): this;
|
|
105
|
+
groupBy(groupBy: string): this;
|
|
106
|
+
having(having: string, parameters?: any): this;
|
|
107
|
+
limit(limit: number): this;
|
|
108
|
+
offset(offset: number): this;
|
|
109
|
+
skip(skip: number): this;
|
|
110
|
+
take(take: number): this;
|
|
111
|
+
leftJoin(property: string, alias: string, condition?: string): this;
|
|
112
|
+
innerJoin(property: string, alias: string, condition?: string): this;
|
|
113
|
+
insert(): InsertQueryBuilderLike<T>;
|
|
114
|
+
getMany(): Promise<T[]>;
|
|
115
|
+
getOne(): Promise<T | null>;
|
|
116
|
+
getCount(): Promise<number>;
|
|
117
|
+
getManyAndCount(): Promise<[T[], number]>;
|
|
118
|
+
}
|
|
119
|
+
export interface InsertQueryBuilderLike<T> {
|
|
120
|
+
into(target: any): this;
|
|
121
|
+
values(values: any | any[]): this;
|
|
122
|
+
execute(): Promise<any>;
|
|
123
|
+
}
|
|
124
|
+
export interface QueryRunnerLike {
|
|
125
|
+
connect(): Promise<void>;
|
|
126
|
+
release(): Promise<void>;
|
|
127
|
+
startTransaction(): Promise<void>;
|
|
128
|
+
commitTransaction(): Promise<void>;
|
|
129
|
+
rollbackTransaction(): Promise<void>;
|
|
130
|
+
isTransactionActive: boolean;
|
|
131
|
+
manager: EntityManagerLike;
|
|
132
|
+
}
|
|
133
|
+
export interface TypeORMRepositoryOptions<T> {
|
|
134
|
+
entity: any;
|
|
135
|
+
dataSource: DataSourceLike;
|
|
136
|
+
repository: RepositoryLike<T>;
|
|
137
|
+
zodSchema?: z.ZodSchema<T>;
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/orm/typeorm/types.ts"],"names":[],"mappings":"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"}
|