fragment-ts 3.0.20 → 4.0.1
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 +166 -179
- package/changes/multi-db-per-org-migration-note.md +24 -0
- package/dist/core/container/di-container.d.ts +1 -0
- package/dist/core/container/di-container.d.ts.map +1 -1
- package/dist/core/container/di-container.js +13 -9
- package/dist/core/container/di-container.js.map +1 -1
- package/dist/core/decorators/database.decorator.d.ts +7 -0
- package/dist/core/decorators/database.decorator.d.ts.map +1 -0
- package/dist/core/decorators/database.decorator.js +18 -0
- package/dist/core/decorators/database.decorator.js.map +1 -0
- package/dist/core/decorators/injection.decorators.d.ts +2 -1
- package/dist/core/decorators/injection.decorators.d.ts.map +1 -1
- package/dist/core/decorators/injection.decorators.js +4 -3
- package/dist/core/decorators/injection.decorators.js.map +1 -1
- package/dist/core/index.d.ts +0 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +0 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/metadata/metadata-keys.d.ts +1 -18
- package/dist/core/metadata/metadata-keys.d.ts.map +1 -1
- package/dist/core/metadata/metadata-keys.js +1 -18
- package/dist/core/metadata/metadata-keys.js.map +1 -1
- package/dist/core/scanner/component-scanner.d.ts +0 -1
- package/dist/core/scanner/component-scanner.d.ts.map +1 -1
- package/dist/core/scanner/component-scanner.js +4 -41
- package/dist/core/scanner/component-scanner.js.map +1 -1
- package/dist/index.d.ts +3 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -18
- package/dist/index.js.map +1 -1
- package/dist/integrations/typeorm/config/DatabaseConfigLoader.d.ts +6 -1
- package/dist/integrations/typeorm/config/DatabaseConfigLoader.d.ts.map +1 -1
- package/dist/integrations/typeorm/config/DatabaseConfigLoader.js +86 -2
- package/dist/integrations/typeorm/config/DatabaseConfigLoader.js.map +1 -1
- package/dist/integrations/typeorm/repository-extensions.d.ts +5 -0
- package/dist/integrations/typeorm/repository-extensions.d.ts.map +1 -0
- package/dist/integrations/typeorm/repository-extensions.js +73 -0
- package/dist/integrations/typeorm/repository-extensions.js.map +1 -0
- package/dist/integrations/typeorm/typeorm-module.d.ts +11 -6
- package/dist/integrations/typeorm/typeorm-module.d.ts.map +1 -1
- package/dist/integrations/typeorm/typeorm-module.js +52 -19
- package/dist/integrations/typeorm/typeorm-module.js.map +1 -1
- package/dist/integrations/typeorm/types/SupportedDatabaseConfig.d.ts +1 -0
- package/dist/integrations/typeorm/types/SupportedDatabaseConfig.d.ts.map +1 -1
- package/dist/platform/cli/commands/init/command.d.ts.map +1 -1
- package/dist/platform/cli/commands/init/command.js +3 -18
- package/dist/platform/cli/commands/init/command.js.map +1 -1
- package/dist/platform/cli/commands/make/command.d.ts.map +1 -1
- package/dist/platform/cli/commands/make/command.js +5 -6
- package/dist/platform/cli/commands/make/command.js.map +1 -1
- package/dist/platform/cli/commands/migrate/command.d.ts +20 -12
- package/dist/platform/cli/commands/migrate/command.d.ts.map +1 -1
- package/dist/platform/cli/commands/migrate/command.js +263 -216
- package/dist/platform/cli/commands/migrate/command.js.map +1 -1
- package/dist/platform/cli/commands/register.d.ts.map +1 -1
- package/dist/platform/cli/commands/register.js +28 -33
- package/dist/platform/cli/commands/register.js.map +1 -1
- package/dist/platform/cli/commands/serve/command.d.ts +0 -2
- package/dist/platform/cli/commands/serve/command.d.ts.map +1 -1
- package/dist/platform/cli/commands/serve/command.js +3 -111
- package/dist/platform/cli/commands/serve/command.js.map +1 -1
- package/dist/platform/cli/scaffold/generate/component-generator.d.ts +1 -8
- package/dist/platform/cli/scaffold/generate/component-generator.d.ts.map +1 -1
- package/dist/platform/cli/scaffold/generate/component-generator.js +0 -157
- package/dist/platform/cli/scaffold/generate/component-generator.js.map +1 -1
- package/dist/platform/cli/scaffold/init/init.scaffold.d.ts.map +1 -1
- package/dist/platform/cli/scaffold/init/init.scaffold.js +96 -28
- package/dist/platform/cli/scaffold/init/init.scaffold.js.map +1 -1
- package/dist/platform/cli/scaffold/init/prompts.d.ts.map +1 -1
- package/dist/platform/cli/scaffold/init/prompts.js +20 -2
- package/dist/platform/cli/scaffold/init/prompts.js.map +1 -1
- package/dist/platform/web/bootstrap/ApplicationBootstrapper.d.ts +0 -4
- package/dist/platform/web/bootstrap/ApplicationBootstrapper.d.ts.map +1 -1
- package/dist/platform/web/bootstrap/ApplicationBootstrapper.js +2 -90
- package/dist/platform/web/bootstrap/ApplicationBootstrapper.js.map +1 -1
- package/dist/platform/web/bootstrap/ComponentScanner.d.ts.map +1 -1
- package/dist/platform/web/bootstrap/ComponentScanner.js +10 -19
- package/dist/platform/web/bootstrap/ComponentScanner.js.map +1 -1
- package/dist/platform/web/bootstrap/RouteRegistrar.d.ts.map +1 -1
- package/dist/platform/web/bootstrap/RouteRegistrar.js +1 -6
- package/dist/platform/web/bootstrap/RouteRegistrar.js.map +1 -1
- package/dist/platform/web/interfaces.d.ts +0 -8
- package/dist/platform/web/interfaces.d.ts.map +1 -1
- package/dist/platform/web/middleware/MiddlewareSetup.d.ts.map +1 -1
- package/dist/platform/web/middleware/MiddlewareSetup.js +1 -11
- package/dist/platform/web/middleware/MiddlewareSetup.js.map +1 -1
- package/dist/platform/web/utils/ConsoleLogger.d.ts.map +1 -1
- package/dist/platform/web/utils/ConsoleLogger.js +1 -2
- package/dist/platform/web/utils/ConsoleLogger.js.map +1 -1
- package/dist/platform/web/utils/RouteUtils.d.ts +0 -1
- package/dist/platform/web/utils/RouteUtils.d.ts.map +1 -1
- package/dist/platform/web/utils/RouteUtils.js +0 -9
- package/dist/platform/web/utils/RouteUtils.js.map +1 -1
- package/dist/shared/config.utils.d.ts +9 -44
- package/dist/shared/config.utils.d.ts.map +1 -1
- package/dist/shared/config.utils.js +47 -33
- package/dist/shared/config.utils.js.map +1 -1
- package/dist/shared/logger.d.ts +0 -3
- package/dist/shared/logger.d.ts.map +1 -1
- package/dist/shared/logger.js +0 -60
- package/dist/shared/logger.js.map +1 -1
- package/dist/shared/runtime.resolver.d.ts.map +1 -1
- package/dist/shared/runtime.resolver.js +1 -4
- package/dist/shared/runtime.resolver.js.map +1 -1
- package/package.json +5 -12
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Fragment TS
|
|
2
2
|
|
|
3
|
-
Fragment TS is a Spring Boot-inspired TypeScript framework for Express and TypeORM, built around dependency injection and decorators, with a fully modular CLI.
|
|
3
|
+
Fragment TS is a Spring Boot-inspired TypeScript framework for Express and TypeORM, built around dependency injection and decorators, with a fully modular CLI.
|
|
4
4
|
|
|
5
5
|
This README is intentionally long and comprehensive so it can serve as a landing page for the framework site.
|
|
6
6
|
|
|
@@ -42,9 +42,8 @@ Key ideas:
|
|
|
42
42
|
## Quick Start
|
|
43
43
|
|
|
44
44
|
1. Install the CLI: `npm install -g fragment-ts`
|
|
45
|
-
2. Initialize: `
|
|
45
|
+
2. Initialize: `fragment init my-app`
|
|
46
46
|
3. Move into the directory: `cd my-app`
|
|
47
|
-
4. Install a surface with `frg install:api`, `frg install:web`, or let `fragment serve` prompt you on first run
|
|
48
47
|
5. Run the dev server: `fragment serve`
|
|
49
48
|
|
|
50
49
|
Hello World example:
|
|
@@ -76,20 +75,6 @@ async function bootstrap() {
|
|
|
76
75
|
bootstrap();
|
|
77
76
|
```
|
|
78
77
|
|
|
79
|
-
Surface-based quick start:
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
frag init my-app
|
|
83
|
-
cd my-app
|
|
84
|
-
frg install:api
|
|
85
|
-
frg install:web
|
|
86
|
-
fragment serve
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
By default `frag init` creates a clean shell project. This keeps the new flow modular, while `fragment init --template api`, `--template web`, and `--template full` remain available for backward-compatible one-shot scaffolding.
|
|
90
|
-
`frg install:api` now uses a guided setup so the user can choose whether to add `src/main.ts`, the legacy API starter folders/files, the default SQLite database config, and shared subsystems such as Auth, AI, Mail, Jobs, and Notifications.
|
|
91
|
-
`frg install:web` now guides the user through styling setup as well, including a generated CSS starter, Tailwind via CDN, or an unstyled setup.
|
|
92
|
-
|
|
93
78
|
## Philosophy
|
|
94
79
|
|
|
95
80
|
Fragment TS borrows the clarity of Spring Boot and the ergonomics of modern TypeScript.
|
|
@@ -169,159 +154,112 @@ class SecureController {
|
|
|
169
154
|
}
|
|
170
155
|
```
|
|
171
156
|
|
|
172
|
-
##
|
|
157
|
+
## TypeORM
|
|
173
158
|
|
|
174
|
-
|
|
159
|
+
TypeORM is wired through `TypeORMModule` and `fragment.json`.
|
|
160
|
+
Fragment supports:
|
|
175
161
|
|
|
176
|
-
-
|
|
177
|
-
-
|
|
178
|
-
-
|
|
179
|
-
-
|
|
180
|
-
-
|
|
181
|
-
- When both API and Web surfaces are enabled, Fragment reserves `/api` for API routes by default, mirroring the clean separation used by frameworks like Next.js.
|
|
182
|
-
- `className` works normally in JSX. The Web installer can also generate a stylesheet and static asset path so those classes actually resolve visually.
|
|
162
|
+
- a legacy default connection through `database`
|
|
163
|
+
- multiple named connections through `databases`
|
|
164
|
+
- per-entity database assignment with `@UseDatabase("name")`
|
|
165
|
+
- repository injection through `@InjectRepository(...)`
|
|
166
|
+
- runtime switching through `repo.db("name")` or `repo.db(dbConfig)`
|
|
183
167
|
|
|
184
|
-
|
|
168
|
+
Simple single-database setup:
|
|
185
169
|
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
RouteQuery,
|
|
198
|
-
Selector,
|
|
199
|
-
State,
|
|
200
|
-
StoreState,
|
|
201
|
-
UseStore,
|
|
202
|
-
fragmentStatelessComponent,
|
|
203
|
-
useStoreState,
|
|
204
|
-
} from "fragment-ts";
|
|
205
|
-
|
|
206
|
-
@Controller("/health")
|
|
207
|
-
class HealthController {
|
|
208
|
-
@Get()
|
|
209
|
-
status() {
|
|
210
|
-
return { ok: true };
|
|
170
|
+
```json
|
|
171
|
+
{
|
|
172
|
+
"database": {
|
|
173
|
+
"type": "postgres",
|
|
174
|
+
"host": "localhost",
|
|
175
|
+
"port": 5432,
|
|
176
|
+
"username": "app",
|
|
177
|
+
"password": "secret",
|
|
178
|
+
"database": "app_main",
|
|
179
|
+
"entities": ["src/**/*.entity.ts"],
|
|
180
|
+
"migrations": ["src/migrations/**/*.ts"]
|
|
211
181
|
}
|
|
212
182
|
}
|
|
183
|
+
```
|
|
213
184
|
|
|
214
|
-
|
|
215
|
-
class DashboardStore {
|
|
216
|
-
@State()
|
|
217
|
-
visits = 1;
|
|
218
|
-
|
|
219
|
-
@Selector()
|
|
220
|
-
get headline() {
|
|
221
|
-
return `Visits: ${this.visits}`;
|
|
222
|
-
}
|
|
185
|
+
Named multi-database setup:
|
|
223
186
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
187
|
+
```json
|
|
188
|
+
{
|
|
189
|
+
"databases": {
|
|
190
|
+
"primary": {
|
|
191
|
+
"type": "postgres",
|
|
192
|
+
"host": "localhost",
|
|
193
|
+
"port": 5432,
|
|
194
|
+
"username": "app",
|
|
195
|
+
"password": "secret",
|
|
196
|
+
"database": "app_main",
|
|
197
|
+
"entities": ["src/**/*.entity.ts"],
|
|
198
|
+
"migrations": ["src/migrations/primary/**/*.ts"]
|
|
199
|
+
},
|
|
200
|
+
"analytics": {
|
|
201
|
+
"type": "postgres",
|
|
202
|
+
"host": "localhost",
|
|
203
|
+
"port": 5432,
|
|
204
|
+
"username": "app",
|
|
205
|
+
"password": "secret",
|
|
206
|
+
"database": "app_analytics",
|
|
207
|
+
"entities": ["src/**/*.entity.ts"],
|
|
208
|
+
"migrations": ["src/migrations/analytics/**/*.ts"]
|
|
209
|
+
}
|
|
227
210
|
}
|
|
228
211
|
}
|
|
212
|
+
```
|
|
229
213
|
|
|
230
|
-
|
|
231
|
-
class DashboardPanel {
|
|
232
|
-
@StoreState(DashboardStore, (store) => store.headline)
|
|
233
|
-
private headline!: string;
|
|
234
|
-
|
|
235
|
-
render() {
|
|
236
|
-
return <section>{this.headline}</section>;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
214
|
+
Typical usage:
|
|
239
215
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
216
|
+
```ts
|
|
217
|
+
import {
|
|
218
|
+
Column,
|
|
219
|
+
Entity,
|
|
220
|
+
InjectRepository,
|
|
221
|
+
PrimaryGeneratedColumn,
|
|
222
|
+
Repository,
|
|
223
|
+
Service,
|
|
224
|
+
UseDatabase,
|
|
225
|
+
type DbConfig,
|
|
226
|
+
} from "fragment-ts";
|
|
244
227
|
|
|
245
|
-
@
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
}
|
|
228
|
+
@UseDatabase("analytics")
|
|
229
|
+
@Entity()
|
|
230
|
+
class EventRecord {
|
|
231
|
+
@PrimaryGeneratedColumn()
|
|
232
|
+
id!: number;
|
|
251
233
|
|
|
252
|
-
@
|
|
253
|
-
|
|
254
|
-
class HomePage {
|
|
255
|
-
@RouteParam("id")
|
|
256
|
-
private id!: string;
|
|
257
|
-
|
|
258
|
-
@RouteQuery("tab")
|
|
259
|
-
private tab?: string;
|
|
260
|
-
|
|
261
|
-
render() {
|
|
262
|
-
return (
|
|
263
|
-
<>
|
|
264
|
-
<p>
|
|
265
|
-
Product: {this.id} | Tab: {this.tab || "overview"}
|
|
266
|
-
</p>
|
|
267
|
-
<DashboardBadge />
|
|
268
|
-
<DashboardPanel />
|
|
269
|
-
</>
|
|
270
|
-
);
|
|
271
|
-
}
|
|
234
|
+
@Column()
|
|
235
|
+
event!: string;
|
|
272
236
|
}
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
Backward compatibility note:
|
|
276
|
-
|
|
277
|
-
- Existing controller-only projects still work without changes.
|
|
278
|
-
- Database initialization is skipped unless a `database` block exists in `fragment.json`.
|
|
279
|
-
- When both surfaces are enabled, API routes default to `/api` unless the user explicitly overrides `routePointer.apiPrefix`.
|
|
280
|
-
|
|
281
|
-
## Styling and Assets
|
|
282
237
|
|
|
283
|
-
|
|
238
|
+
@Service()
|
|
239
|
+
class EventService {
|
|
240
|
+
@InjectRepository(EventRecord)
|
|
241
|
+
private events!: Repository<EventRecord>;
|
|
284
242
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
- `tailwind`: injects the Tailwind CDN script for utility-class usage without a bundler.
|
|
289
|
-
- `unstyled`: no default stylesheet is added.
|
|
290
|
-
- Static assets are served from `public/` and `src/web/public/`.
|
|
243
|
+
async fromAssignedDatabase() {
|
|
244
|
+
return this.events.findAll();
|
|
245
|
+
}
|
|
291
246
|
|
|
292
|
-
|
|
247
|
+
async fromNamedDatabase() {
|
|
248
|
+
return this.events.db("analytics").findAll();
|
|
249
|
+
}
|
|
293
250
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
"web": {
|
|
297
|
-
"sourceRoot": "src/web",
|
|
298
|
-
"styling": {
|
|
299
|
-
"provider": "css",
|
|
300
|
-
"stylesheetPath": "/styles/global.css"
|
|
301
|
-
}
|
|
251
|
+
async fromRuntimeConfig(dbConfig: DbConfig) {
|
|
252
|
+
return this.events.db(dbConfig).findAll();
|
|
302
253
|
}
|
|
303
254
|
}
|
|
304
255
|
```
|
|
305
256
|
|
|
306
|
-
|
|
257
|
+
Rules of thumb:
|
|
307
258
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
- `database`
|
|
313
|
-
- `auth`
|
|
314
|
-
- `ai`
|
|
315
|
-
- `mail`
|
|
316
|
-
- `jobs`
|
|
317
|
-
- `notifications`
|
|
318
|
-
|
|
319
|
-
If a subsystem is already configured in `fragment.json`, the install flow does not need to set it up again for the other surface. This keeps surface installs additive instead of duplicating config.
|
|
320
|
-
|
|
321
|
-
## TypeORM
|
|
322
|
-
|
|
323
|
-
TypeORM is wired through `TypeORMModule` and `fragment.json`.
|
|
324
|
-
Use `@InjectRepository` to access repositories.
|
|
259
|
+
- if `database` exists, it remains the default connection
|
|
260
|
+
- if only one named database exists in `databases`, Fragment treats it as the primary runtime default
|
|
261
|
+
- if multiple named databases exist and there is no default, entity/repository usage should be explicit
|
|
262
|
+
- migration and seed commands prompt for the database target when more than one database exists
|
|
325
263
|
|
|
326
264
|
## Plugins
|
|
327
265
|
|
|
@@ -350,16 +288,11 @@ Per-module runtime docs can be served at `/docs/modules/:module`.
|
|
|
350
288
|
|
|
351
289
|
## CLI Overview
|
|
352
290
|
|
|
353
|
-
The CLI (`fragment
|
|
291
|
+
The CLI (`fragment` or `frg`) provides scaffolding, diagnostics, and automation.
|
|
354
292
|
Selected commands:
|
|
355
293
|
|
|
356
294
|
- fragment init [dir]
|
|
357
|
-
- fragment init --template api
|
|
358
|
-
- fragment init --template web
|
|
359
|
-
- fragment init --template full
|
|
360
295
|
- fragment init --type=plugin
|
|
361
|
-
- frg install:api
|
|
362
|
-
- frg install:web
|
|
363
296
|
- fragment serve
|
|
364
297
|
- fragment build
|
|
365
298
|
- fragment test
|
|
@@ -377,16 +310,15 @@ Selected commands:
|
|
|
377
310
|
- fragment make:controller <name>
|
|
378
311
|
- fragment make:service <name>
|
|
379
312
|
- fragment make:client <name>
|
|
380
|
-
- fragment make:view <name>
|
|
381
|
-
- fragment make:store <name>
|
|
382
|
-
- fragment make:component <name>
|
|
383
|
-
- fragment make:template <name>
|
|
384
|
-
- fragment make:layout <name>
|
|
385
|
-
- fragment make:stateless <name>
|
|
386
313
|
- fragment make:resource <name>
|
|
314
|
+
- fragment make:entity <name>
|
|
387
315
|
- fragment make:dto <name>
|
|
316
|
+
- fragment make:repository <name>
|
|
388
317
|
- fragment make:middleware <name>
|
|
389
318
|
- fragment make:guard <name>
|
|
319
|
+
- fragment make:interceptor <name>
|
|
320
|
+
- fragment make:filter <name>
|
|
321
|
+
- fragment make:feature <name>
|
|
390
322
|
- fragment make:job <name>
|
|
391
323
|
- fragment make:mail <name>
|
|
392
324
|
- fragment make:notification <name>
|
|
@@ -399,21 +331,6 @@ Example:
|
|
|
399
331
|
```json
|
|
400
332
|
{
|
|
401
333
|
"structure": { "type": "module" },
|
|
402
|
-
"surfaces": { "api": true, "web": true },
|
|
403
|
-
"routePointer": {
|
|
404
|
-
"apiPrefix": "/api",
|
|
405
|
-
"webPrefix": "/",
|
|
406
|
-
"exposeApiToWeb": true
|
|
407
|
-
},
|
|
408
|
-
"web": {
|
|
409
|
-
"sourceRoot": "src/web",
|
|
410
|
-
"styling": {
|
|
411
|
-
"provider": "css",
|
|
412
|
-
"stylesheetPath": "/styles/global.css"
|
|
413
|
-
}
|
|
414
|
-
},
|
|
415
|
-
"auth": { "enabled": true, "jwtSecretEnv": "JWT_SECRET", "jwtExpirationEnv": "JWT_EXPIRATION" },
|
|
416
|
-
"ai": { "enabled": true, "provider": "openai", "apiKeyEnv": "OPENAI_API_KEY", "model": "gpt-4o-mini" },
|
|
417
334
|
"verbose": false,
|
|
418
335
|
"logging": { "level": "info", "structured": false },
|
|
419
336
|
"docs": {
|
|
@@ -428,7 +345,9 @@ Example:
|
|
|
428
345
|
"port": 5432,
|
|
429
346
|
"username": "postgres",
|
|
430
347
|
"password": "password",
|
|
431
|
-
"database": "fragment"
|
|
348
|
+
"database": "fragment",
|
|
349
|
+
"entities": ["src/**/*.entity.ts"],
|
|
350
|
+
"migrations": ["src/migrations/**/*.ts"]
|
|
432
351
|
},
|
|
433
352
|
"mail": {
|
|
434
353
|
"default": "primary",
|
|
@@ -452,6 +371,10 @@ Configuration keys (high-level):
|
|
|
452
371
|
- database.\*
|
|
453
372
|
- database.entities
|
|
454
373
|
- database.migrations
|
|
374
|
+
- databases
|
|
375
|
+
- databases.<name>.*
|
|
376
|
+
- databases.<name>.entities
|
|
377
|
+
- databases.<name>.migrations
|
|
455
378
|
- mail.default
|
|
456
379
|
- mail.mailers
|
|
457
380
|
- mail.templatesDir
|
|
@@ -488,7 +411,6 @@ describe("math", () => {
|
|
|
488
411
|
|
|
489
412
|
Use `FragmentLogger` with configurable levels and structured output.
|
|
490
413
|
`verbose` or `logging.level` controls the output verbosity.
|
|
491
|
-
To mirror logs into a file, set `logging.file` in `fragment.json`, for example `\"logging\": { \"level\": \"info\", \"file\": \"logs/fragment.log\" }`.
|
|
492
414
|
|
|
493
415
|
## Feature Index
|
|
494
416
|
|
|
@@ -657,17 +579,19 @@ A: Set `docs.enabled` to `false` in `fragment.json`.
|
|
|
657
579
|
- CLI: `fragment add <package>` is part of the primary workflow.
|
|
658
580
|
- CLI: `fragment make:controller <name>` is part of the primary workflow.
|
|
659
581
|
- CLI: `fragment make:service <name>` is part of the primary workflow.
|
|
582
|
+
- CLI: `fragment make:client <name>` is part of the primary workflow.
|
|
660
583
|
- CLI: `fragment make:resource <name>` is part of the primary workflow.
|
|
584
|
+
- CLI: `fragment make:entity <name>` is part of the primary workflow.
|
|
661
585
|
- CLI: `fragment make:dto <name>` is part of the primary workflow.
|
|
586
|
+
- CLI: `fragment make:repository <name>` is part of the primary workflow.
|
|
662
587
|
- CLI: `fragment make:middleware <name>` is part of the primary workflow.
|
|
663
588
|
- CLI: `fragment make:guard <name>` is part of the primary workflow.
|
|
589
|
+
- CLI: `fragment make:interceptor <name>` is part of the primary workflow.
|
|
590
|
+
- CLI: `fragment make:filter <name>` is part of the primary workflow.
|
|
591
|
+
- CLI: `fragment make:feature <name>` is part of the primary workflow.
|
|
664
592
|
- CLI: `fragment make:job <name>` is part of the primary workflow.
|
|
665
593
|
- CLI: `fragment make:mail <name>` is part of the primary workflow.
|
|
666
594
|
- CLI: `fragment make:notification <name>` is part of the primary workflow.
|
|
667
|
-
- CLI: `fragment make:view <name>` is part of the primary workflow.
|
|
668
|
-
- CLI: `fragment make:store <name>` is part of the primary workflow.
|
|
669
|
-
- CLI: `fragment make:component <name>` is part of the primary workflow.
|
|
670
|
-
- CLI: `fragment make:template <name>` is part of the primary workflow.
|
|
671
595
|
- Config: `structure.type` is a stable knob for behavior.
|
|
672
596
|
- Config: `verbose` is a stable knob for behavior.
|
|
673
597
|
- Config: `logging.level` is a stable knob for behavior.
|
|
@@ -729,6 +653,69 @@ class CustomerClient extends FrgClient {
|
|
|
729
653
|
}
|
|
730
654
|
```
|
|
731
655
|
|
|
656
|
+
Multi-database setups can skip the top-level `database` block and use `databases` only:
|
|
657
|
+
|
|
658
|
+
```json
|
|
659
|
+
{
|
|
660
|
+
"databases": {
|
|
661
|
+
"primary": {
|
|
662
|
+
"type": "postgres",
|
|
663
|
+
"database": "app_main",
|
|
664
|
+
"entities": ["src/**/*.entity.ts"]
|
|
665
|
+
},
|
|
666
|
+
"analytics": {
|
|
667
|
+
"type": "postgres",
|
|
668
|
+
"database": "app_analytics",
|
|
669
|
+
"entities": ["src/**/*.entity.ts"]
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
```
|
|
674
|
+
|
|
675
|
+
If there is only one named database, Fragment treats it as the primary default at runtime. If there are multiple named databases and no default, entities should opt in explicitly with `@UseDatabase("name")` or repository injection should pass the database name.
|
|
676
|
+
|
|
677
|
+
## Multi Database
|
|
678
|
+
|
|
679
|
+
Fragment now supports:
|
|
680
|
+
|
|
681
|
+
- one legacy default database via `database`
|
|
682
|
+
- any number of named databases via `databases`
|
|
683
|
+
- per-entity targeting with `@UseDatabase("analytics")`
|
|
684
|
+
- repository injection with `@InjectRepository(Entity, "analytics")`
|
|
685
|
+
- runtime repository switching with `repo.db("analytics")`
|
|
686
|
+
- runtime repository switching with ad hoc config objects via `repo.db(dbConfig)`
|
|
687
|
+
|
|
688
|
+
Migration and seed commands are database-aware too. Commands like `frg migrate`, `frg migrate:generate`, `frg seed:run`, and `frg seed:create` now prompt for the target database before running when more than one database is configured. You can also pass `--database <name>` to skip the prompt.
|
|
689
|
+
|
|
690
|
+
End-to-end flow:
|
|
691
|
+
|
|
692
|
+
1. Define one or more connections in `fragment.json`
|
|
693
|
+
2. Assign an entity with `@UseDatabase("name")`, or keep it on the default database
|
|
694
|
+
3. Inject the repository with `@InjectRepository(Entity)` or `@InjectRepository(Entity, "name")`
|
|
695
|
+
4. Optionally switch per-query with `repo.db("name")` or `repo.db(dbConfig)`
|
|
696
|
+
5. Run `frg migrate` or `frg seed:run` and choose the database when prompted
|
|
697
|
+
|
|
698
|
+
Programmatic example:
|
|
699
|
+
|
|
700
|
+
```ts
|
|
701
|
+
import {
|
|
702
|
+
type DbConfig,
|
|
703
|
+
InjectRepository,
|
|
704
|
+
Repository,
|
|
705
|
+
Service,
|
|
706
|
+
} from "fragment-ts";
|
|
707
|
+
|
|
708
|
+
@Service()
|
|
709
|
+
export class EventService {
|
|
710
|
+
@InjectRepository(EventRecord)
|
|
711
|
+
private events!: Repository<EventRecord>;
|
|
712
|
+
|
|
713
|
+
async run(acmeOrgDbConfig: DbConfig) {
|
|
714
|
+
return this.events.db(acmeOrgDbConfig).findAll();
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
```
|
|
718
|
+
|
|
732
719
|
What this adds:
|
|
733
720
|
|
|
734
721
|
- Static `get`, `post`, `put`, `patch`, `delete`, `request`, and `raw`
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
Yes, it is possible.
|
|
2
|
+
|
|
3
|
+
But it is a major architecture change, not just "create database on signup".
|
|
4
|
+
|
|
5
|
+
Right now the system appears to be built mostly as shared-database multi-tenancy: records are separated by fields like `organization_system_id`. Moving to one database per organization would mean:
|
|
6
|
+
|
|
7
|
+
- Keep a central or platform database for global concerns such as organizations, users/auth, admin, billing plans, access control seeds, and system config.
|
|
8
|
+
- Create a separate tenant database when a new organization is provisioned.
|
|
9
|
+
- Store that tenant database name or connection info on the organization record.
|
|
10
|
+
- Add a tenant connection resolver so every organization-scoped request connects to the correct database.
|
|
11
|
+
- Run migrations and seeds per tenant database.
|
|
12
|
+
- Decide clearly which modules stay global and which become tenant-local.
|
|
13
|
+
- Migrate existing organization data from the shared database into dedicated tenant databases.
|
|
14
|
+
|
|
15
|
+
Best approach would be phased:
|
|
16
|
+
|
|
17
|
+
1. Add tenant database provisioning during organization creation.
|
|
18
|
+
2. Keep the current shared database working as a fallback.
|
|
19
|
+
3. Add a tenant-aware repository and service layer.
|
|
20
|
+
4. Move one module first, for example POS or products.
|
|
21
|
+
5. Migrate other modules gradually.
|
|
22
|
+
6. Finally move existing organization data into per-organization databases.
|
|
23
|
+
|
|
24
|
+
So yes, fully possible, but it should be treated as a careful multi-step migration, not a quick patch.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"di-container.d.ts","sourceRoot":"","sources":["../../../src/core/container/di-container.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"di-container.d.ts","sourceRoot":"","sources":["../../../src/core/container/di-container.ts"],"names":[],"mappings":"AAcA,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;IACrC,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,eAAe,CAAkB;IAEzC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,WAAW;IAOjC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,IAAI;IAU/D,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAIzB,oBAAoB,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC;IAiE1D,OAAO,CAAC,cAAc;IA6CtB,OAAO,CAAC,kBAAkB;IAiD1B,OAAO,CAAC,gBAAgB;IA4GxB,OAAO,CAAC,2BAA2B;IA6CnC,OAAO,CAAC,uBAAuB;IA4B/B,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,wBAAwB;IAmBhC,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,kBAAkB;IAoC1B,OAAO,CAAC,oBAAoB;IAgC5B,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,YAAY;IAgDpB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,4BAA4B;IAkCpC,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAQxB,eAAe,IAAI,GAAG,EAAE;IAIxB,KAAK,IAAI,IAAI;IAQb,KAAK,IAAI,IAAI;IAIb,gBAAgB,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC;QACnC,MAAM,EAAE,GAAG,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;QACnC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IAwBF,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,EAAE;IAY9B,OAAO,CAAC,wBAAwB;IAkChC,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,cAAc;CAWvB"}
|
|
@@ -6,7 +6,6 @@ const metadata_storage_1 = require("../metadata/metadata-storage");
|
|
|
6
6
|
const logger_1 = require("../../shared/logger");
|
|
7
7
|
const errors_1 = require("../../shared/errors");
|
|
8
8
|
const config_utils_1 = require("../../shared/config.utils");
|
|
9
|
-
const mobx_support_1 = require("../../platform/web/react/mobx-support");
|
|
10
9
|
const logger = logger_1.FragmentLogger.for("di");
|
|
11
10
|
class DIContainer {
|
|
12
11
|
constructor() {
|
|
@@ -101,7 +100,6 @@ class DIContainer {
|
|
|
101
100
|
const instance = new target(...params);
|
|
102
101
|
// CRITICAL FIX: Inject properties using metadata storage
|
|
103
102
|
this.injectProperties(instance);
|
|
104
|
-
mobx_support_1.FragmentMobxSupport.initialize(instance, target);
|
|
105
103
|
this.applyTraceWrappers(instance, target);
|
|
106
104
|
// Call @PostConstruct method if exists
|
|
107
105
|
const postConstructMethod = Reflect.getMetadata(metadata_keys_1.METADATA_KEYS.POST_CONSTRUCT, target);
|
|
@@ -171,7 +169,7 @@ class DIContainer {
|
|
|
171
169
|
this.injectAllTokenProperty(instance, propertyKey, metadata?.token, className);
|
|
172
170
|
break;
|
|
173
171
|
case "repository":
|
|
174
|
-
this.injectRepositoryProperty(instance, propertyKey, metadata?.entity, className);
|
|
172
|
+
this.injectRepositoryProperty(instance, propertyKey, metadata?.entity, metadata?.databaseName, className);
|
|
175
173
|
break;
|
|
176
174
|
case "value":
|
|
177
175
|
this.injectValueProperty(instance, propertyKey, metadata?.expression, className);
|
|
@@ -250,9 +248,9 @@ class DIContainer {
|
|
|
250
248
|
instance[propertyKey] = this.resolveAll(token);
|
|
251
249
|
logger.debug(`✅ Injected all ${tokenName} implementations into ${className}.${propertyKey}`);
|
|
252
250
|
}
|
|
253
|
-
injectRepositoryProperty(instance, propertyKey, entity, className) {
|
|
254
|
-
logger.debug(`💾 @InjectRepository: ${className}.${propertyKey} → Repository<${entity.name}
|
|
255
|
-
instance[propertyKey] = this.
|
|
251
|
+
injectRepositoryProperty(instance, propertyKey, entity, databaseName, className) {
|
|
252
|
+
logger.debug(`💾 @InjectRepository: ${className}.${propertyKey} → Repository<${entity.name}>${databaseName ? ` @ ${databaseName}` : ""}`);
|
|
253
|
+
instance[propertyKey] = this.resolveRepositoryForDatabase(entity, databaseName);
|
|
256
254
|
logger.debug(`✅ Injected Repository<${entity.name}> into ${className}.${propertyKey}`);
|
|
257
255
|
}
|
|
258
256
|
injectValueProperty(instance, propertyKey, expression, className) {
|
|
@@ -356,16 +354,22 @@ class DIContainer {
|
|
|
356
354
|
return defaultValue !== undefined ? defaultValue : undefined;
|
|
357
355
|
}
|
|
358
356
|
resolveRepository(entity) {
|
|
357
|
+
return this.resolveRepositoryForDatabase(entity);
|
|
358
|
+
}
|
|
359
|
+
resolveRepositoryForDatabase(entity, explicitDatabaseName) {
|
|
359
360
|
try {
|
|
360
361
|
const { TypeORMModule } = require("../../integrations/typeorm/typeorm-module");
|
|
361
|
-
const
|
|
362
|
+
const { createFragmentRepository, } = require("../../integrations/typeorm/repository-extensions");
|
|
363
|
+
const { getDatabaseNameForTarget, } = require("../decorators/database.decorator");
|
|
364
|
+
const databaseName = explicitDatabaseName || getDatabaseNameForTarget(entity);
|
|
365
|
+
const dataSource = TypeORMModule.getDataSource(databaseName);
|
|
362
366
|
if (!dataSource || !dataSource.isInitialized) {
|
|
363
367
|
throw new errors_1.DataSourceNotInitializedError("TypeORM DataSource not initialized");
|
|
364
368
|
}
|
|
365
|
-
return dataSource.getRepository(entity);
|
|
369
|
+
return createFragmentRepository(entity, dataSource.getRepository(entity));
|
|
366
370
|
}
|
|
367
371
|
catch (error) {
|
|
368
|
-
throw new errors_1.RepositoryResolutionError(`Failed to resolve repository for ${entity.name}: ${error?.message}`);
|
|
372
|
+
throw new errors_1.RepositoryResolutionError(`Failed to resolve repository for ${entity.name}${explicitDatabaseName ? ` on ${explicitDatabaseName}` : ""}: ${error?.message}`);
|
|
369
373
|
}
|
|
370
374
|
}
|
|
371
375
|
has(token) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"di-container.js","sourceRoot":"","sources":["../../../src/core/container/di-container.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"di-container.js","sourceRoot":"","sources":["../../../src/core/container/di-container.ts"],"names":[],"mappings":"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"}
|