@plyaz/db 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +169 -0
- package/dist/adapters/drizzle/DrizzleAdapter.d.ts +269 -0
- package/dist/adapters/drizzle/DrizzleAdapter.d.ts.map +1 -0
- package/dist/adapters/index.d.ts +20 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/sql/SQLAdapter.d.ts +282 -0
- package/dist/adapters/sql/SQLAdapter.d.ts.map +1 -0
- package/dist/adapters/supabase/SupabaseAdapter.d.ts +305 -0
- package/dist/adapters/supabase/SupabaseAdapter.d.ts.map +1 -0
- package/dist/advanced/backup/BackupService.d.ts +159 -0
- package/dist/advanced/backup/BackupService.d.ts.map +1 -0
- package/dist/advanced/backup/index.d.ts +2 -0
- package/dist/advanced/backup/index.d.ts.map +1 -0
- package/dist/advanced/caching/CacheEvict.decorator.d.ts +3 -0
- package/dist/advanced/caching/CacheEvict.decorator.d.ts.map +1 -0
- package/dist/advanced/caching/Cacheable.decorator.d.ts +99 -0
- package/dist/advanced/caching/Cacheable.decorator.d.ts.map +1 -0
- package/dist/advanced/caching/RedisCache.d.ts +417 -0
- package/dist/advanced/caching/RedisCache.d.ts.map +1 -0
- package/dist/advanced/caching/index.d.ts +4 -0
- package/dist/advanced/caching/index.d.ts.map +1 -0
- package/dist/advanced/connection-pool/DynamicPool.d.ts +234 -0
- package/dist/advanced/connection-pool/DynamicPool.d.ts.map +1 -0
- package/dist/advanced/connection-pool/index.d.ts +2 -0
- package/dist/advanced/connection-pool/index.d.ts.map +1 -0
- package/dist/advanced/index.d.ts +8 -0
- package/dist/advanced/index.d.ts.map +1 -0
- package/dist/advanced/monitoring/AlertManager.d.ts +72 -0
- package/dist/advanced/monitoring/AlertManager.d.ts.map +1 -0
- package/dist/advanced/monitoring/MetricsCollector.d.ts +81 -0
- package/dist/advanced/monitoring/MetricsCollector.d.ts.map +1 -0
- package/dist/advanced/monitoring/index.d.ts +3 -0
- package/dist/advanced/monitoring/index.d.ts.map +1 -0
- package/dist/advanced/multi-tenancy/TenantContext.d.ts +52 -0
- package/dist/advanced/multi-tenancy/TenantContext.d.ts.map +1 -0
- package/dist/advanced/multi-tenancy/TenantRepository.d.ts +292 -0
- package/dist/advanced/multi-tenancy/TenantRepository.d.ts.map +1 -0
- package/dist/advanced/multi-tenancy/index.d.ts +3 -0
- package/dist/advanced/multi-tenancy/index.d.ts.map +1 -0
- package/dist/advanced/read-replica/ReadReplicaAdapter.d.ts +516 -0
- package/dist/advanced/read-replica/ReadReplicaAdapter.d.ts.map +1 -0
- package/dist/advanced/read-replica/ReadReplicaManager.d.ts +68 -0
- package/dist/advanced/read-replica/ReadReplicaManager.d.ts.map +1 -0
- package/dist/advanced/read-replica/UseReplica.decorator.d.ts +24 -0
- package/dist/advanced/read-replica/UseReplica.decorator.d.ts.map +1 -0
- package/dist/advanced/read-replica/index.d.ts +3 -0
- package/dist/advanced/read-replica/index.d.ts.map +1 -0
- package/dist/advanced/sharding/ShardKey.d.ts +80 -0
- package/dist/advanced/sharding/ShardKey.d.ts.map +1 -0
- package/dist/advanced/sharding/ShardRouter.d.ts +66 -0
- package/dist/advanced/sharding/ShardRouter.d.ts.map +1 -0
- package/dist/advanced/sharding/index.d.ts +3 -0
- package/dist/advanced/sharding/index.d.ts.map +1 -0
- package/dist/builder/query/index.d.ts +7 -0
- package/dist/builder/query/index.d.ts.map +1 -0
- package/dist/builder/query/orm.d.ts +22 -0
- package/dist/builder/query/orm.d.ts.map +1 -0
- package/dist/builder/query/sql.d.ts +29 -0
- package/dist/builder/query/sql.d.ts.map +1 -0
- package/dist/extensions/AuditExtension.d.ts +468 -0
- package/dist/extensions/AuditExtension.d.ts.map +1 -0
- package/dist/extensions/CachingAdapter.d.ts +451 -0
- package/dist/extensions/CachingAdapter.d.ts.map +1 -0
- package/dist/extensions/EncryptionExtension.d.ts +95 -0
- package/dist/extensions/EncryptionExtension.d.ts.map +1 -0
- package/dist/extensions/ReadReplicaAdapter.d.ts +32 -0
- package/dist/extensions/ReadReplicaAdapter.d.ts.map +1 -0
- package/dist/extensions/SoftDeleteExtension.d.ts +430 -0
- package/dist/extensions/SoftDeleteExtension.d.ts.map +1 -0
- package/dist/extensions/index.d.ts +79 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/factory/AdapterFactory.d.ts +111 -0
- package/dist/factory/AdapterFactory.d.ts.map +1 -0
- package/dist/factory/createDatabaseService.d.ts +121 -0
- package/dist/factory/createDatabaseService.d.ts.map +1 -0
- package/dist/index.cjs +8518 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +8480 -0
- package/dist/index.mjs.map +1 -0
- package/dist/repository/BaseRepository.d.ts +209 -0
- package/dist/repository/BaseRepository.d.ts.map +1 -0
- package/dist/repository/index.d.ts +80 -0
- package/dist/repository/index.d.ts.map +1 -0
- package/dist/security/index.cjs +118 -0
- package/dist/security/index.cjs.map +1 -0
- package/dist/security/index.d.ts +3 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.mjs +114 -0
- package/dist/security/index.mjs.map +1 -0
- package/dist/security/sanitizers/html.sanitizer.d.ts +31 -0
- package/dist/security/sanitizers/html.sanitizer.d.ts.map +1 -0
- package/dist/security/serializers/DataValidation.d.ts +34 -0
- package/dist/security/serializers/DataValidation.d.ts.map +1 -0
- package/dist/service/DatabaseService.d.ts +136 -0
- package/dist/service/DatabaseService.d.ts.map +1 -0
- package/dist/service/EventEmitter.d.ts +110 -0
- package/dist/service/EventEmitter.d.ts.map +1 -0
- package/dist/service/HealthManager.d.ts +166 -0
- package/dist/service/HealthManager.d.ts.map +1 -0
- package/dist/utils/ConfigMerger.d.ts +227 -0
- package/dist/utils/ConfigMerger.d.ts.map +1 -0
- package/dist/utils/databaseResultHelpers.d.ts +98 -0
- package/dist/utils/databaseResultHelpers.d.ts.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/normalizeDetails.d.ts +111 -0
- package/dist/utils/normalizeDetails.d.ts.map +1 -0
- package/dist/utils/pagination.d.ts +77 -0
- package/dist/utils/pagination.d.ts.map +1 -0
- package/dist/utils/regex.d.ts +199 -0
- package/dist/utils/regex.d.ts.map +1 -0
- package/dist/utils/typeGuards.d.ts +57 -0
- package/dist/utils/typeGuards.d.ts.map +1 -0
- package/dist/utils/validation.d.ts +146 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/package.json +156 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DATABASE SERVICE FACTORY - Main Entry Point
|
|
3
|
+
*
|
|
4
|
+
* This file is responsible for creating fully configured database services with extension chains.
|
|
5
|
+
* It implements the decorator pattern to wrap base adapters with feature extensions.
|
|
6
|
+
*
|
|
7
|
+
* **RESPONSIBILITIES:**
|
|
8
|
+
* 1. Config Validation - Ensures valid configuration before proceeding
|
|
9
|
+
* 2. Base Adapter Creation - Creates core database adapters (Drizzle/Supabase/SQL)
|
|
10
|
+
* 3. Adapter Chain Building - Wraps adapters with extensions in correct order
|
|
11
|
+
* 4. Service Assembly - Creates final DatabaseService with all components
|
|
12
|
+
* 5. Initialization - Establishes database connections and readiness
|
|
13
|
+
*
|
|
14
|
+
* **ADAPTER CHAIN ORDER:**
|
|
15
|
+
* Base → Encryption → SoftDelete → Caching → Audit → ReadReplica
|
|
16
|
+
* (innermost to outermost - each wraps the previous)
|
|
17
|
+
*/
|
|
18
|
+
import type { DatabaseServiceInterface, DatabaseServiceConfig } from "@plyaz/types/db";
|
|
19
|
+
/**
|
|
20
|
+
* MAIN FACTORY - Application Entry Point
|
|
21
|
+
*
|
|
22
|
+
* Creates a fully configured database service with extension chain.
|
|
23
|
+
* This is the ONLY way applications should create database services.
|
|
24
|
+
*
|
|
25
|
+
* **Application Flow:**
|
|
26
|
+
* 1. App calls createDatabaseService() at startup
|
|
27
|
+
* 2. Factory validates config and creates base adapter (Drizzle/Supabase/etc.)
|
|
28
|
+
* 3. Factory builds 6-layer adapter chain: Base → Encryption → SoftDelete → Cache → Audit → ReadReplica
|
|
29
|
+
* 4. Factory creates DatabaseService with final wrapped adapter
|
|
30
|
+
* 5. App uses returned DatabaseServiceInterface in repositories/services
|
|
31
|
+
*
|
|
32
|
+
* **What this function does:**
|
|
33
|
+
* - Validates configuration using validateConfig()
|
|
34
|
+
* - Creates base adapter via AdapterFactory.create()
|
|
35
|
+
* - Builds decorator chain via buildAdapterChain()
|
|
36
|
+
* - Initializes database connection
|
|
37
|
+
* - Returns configured DatabaseService instance
|
|
38
|
+
*
|
|
39
|
+
* **Called by:** Application startup code (app.ts, main.ts)
|
|
40
|
+
* **Calls:** validateConfig(), AdapterFactory.create(), buildAdapterChain(), DatabaseService constructor
|
|
41
|
+
* **Returns to:** Application layer for injection into repositories
|
|
42
|
+
*
|
|
43
|
+
* @param config Complete database service configuration including adapter and extensions
|
|
44
|
+
* @returns Promise resolving to configured DatabaseServiceInterface instance
|
|
45
|
+
*
|
|
46
|
+
* @throws {BaseError} When configuration is invalid or initialization fails
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ### Basic Setup (app.ts)
|
|
50
|
+
* ```typescript
|
|
51
|
+
* import { createDatabaseService, Tables } from '@plyaz/db';
|
|
52
|
+
*
|
|
53
|
+
* // Called once at application startup
|
|
54
|
+
* const db = await createDatabaseService({
|
|
55
|
+
* adapter: 'drizzle',
|
|
56
|
+
* config: { connectionString: process.env.DATABASE_URL }
|
|
57
|
+
* });
|
|
58
|
+
*
|
|
59
|
+
* // Inject into services
|
|
60
|
+
* const userService = new UserService(db);
|
|
61
|
+
* ```
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ### Production Configuration
|
|
65
|
+
* ```typescript
|
|
66
|
+
* const db = await createDatabaseService({
|
|
67
|
+
* adapter: 'drizzle',
|
|
68
|
+
* config: {
|
|
69
|
+
* connectionString: process.env.DATABASE_URL,
|
|
70
|
+
* poolSize: 20
|
|
71
|
+
* },
|
|
72
|
+
*
|
|
73
|
+
* // Extensions applied in order: Base → Encryption → SoftDelete → Cache → Audit → ReadReplica
|
|
74
|
+
* encryption: {
|
|
75
|
+
* enabled: true,
|
|
76
|
+
* key: process.env.ENCRYPTION_KEY,
|
|
77
|
+
* fields: {
|
|
78
|
+
* [Tables.USERS]: ['ssn', 'taxId'],
|
|
79
|
+
* [Tables.PAYMENTS]: ['cardNumber', 'cvv']
|
|
80
|
+
* }
|
|
81
|
+
* },
|
|
82
|
+
*
|
|
83
|
+
* softDelete: {
|
|
84
|
+
* enabled: true,
|
|
85
|
+
* field: 'deletedAt'
|
|
86
|
+
* },
|
|
87
|
+
*
|
|
88
|
+
* audit: {
|
|
89
|
+
* enabled: true,
|
|
90
|
+
* retentionDays: 90,
|
|
91
|
+
* onAuditAfterWrite: async (event) => {
|
|
92
|
+
* await complianceService.recordAudit(event);
|
|
93
|
+
* }
|
|
94
|
+
* },
|
|
95
|
+
*
|
|
96
|
+
* cache: {
|
|
97
|
+
* enabled: true,
|
|
98
|
+
* ttl: 300,
|
|
99
|
+
* invalidation: 'write'
|
|
100
|
+
* },
|
|
101
|
+
*
|
|
102
|
+
* events: {
|
|
103
|
+
* onAfterWrite: async (event) => {
|
|
104
|
+
* await notificationService.send(event);
|
|
105
|
+
* }
|
|
106
|
+
* }
|
|
107
|
+
* });
|
|
108
|
+
* ```
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ### Testing Setup
|
|
112
|
+
* ```typescript
|
|
113
|
+
* // Use mock adapter for tests
|
|
114
|
+
* const db = await createDatabaseService({
|
|
115
|
+
* adapter: 'mock',
|
|
116
|
+
* config: { logging: true }
|
|
117
|
+
* });
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
export declare function createDatabaseService(config: DatabaseServiceConfig): Promise<DatabaseServiceInterface>;
|
|
121
|
+
//# sourceMappingURL=createDatabaseService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createDatabaseService.d.ts","sourceRoot":"","sources":["../../src/factory/createDatabaseService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAmBH,OAAO,KAAK,EACV,wBAAwB,EAKxB,qBAAqB,EAEtB,MAAM,iBAAiB,CAAC;AAuLzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoGG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,wBAAwB,CAAC,CAmDnC"}
|