Skip to content

Commit d8a64b4

Browse files
Copilothotlong
andcommitted
Address code review feedback: improve error handling and documentation clarity
Co-authored-by: hotlong <[email protected]>
1 parent 8476e99 commit d8a64b4

File tree

2 files changed

+14
-12
lines changed

2 files changed

+14
-12
lines changed

packages/foundation/core/RUNTIME_INTEGRATION.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,10 @@ const items = await repo.find({});
167167
```typescript
168168
import type { DriverInterface, QueryAST } from '@objectql/core';
169169

170-
// Use types for compile-time checking
171-
function processQuery(driver: DriverInterface, query: QueryAST) {
172-
// Your code here
170+
// Use types for compile-time checking (type-only import)
171+
function validateQuery(query: QueryAST): boolean {
172+
// Type checking only - no runtime usage of DriverInterface
173+
return query.object !== undefined;
173174
}
174175
```
175176

packages/foundation/core/src/app.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,10 @@ export class ObjectQL implements IObjectQL {
5959
this.stackEngine = new ObjectStackEngine({});
6060

6161
// Register drivers with ObjectStack engine
62-
if (this.datasources) {
63-
for (const [name, driver] of Object.entries(this.datasources)) {
64-
// Wrap the driver to match DriverInterface from @objectstack/spec
65-
const wrappedDriver = this.wrapDriver(name, driver);
66-
this.stackEngine.registerDriver(wrappedDriver, name === 'default');
67-
}
62+
for (const [name, driver] of Object.entries(this.datasources)) {
63+
// Wrap the driver to match DriverInterface from @objectstack/spec
64+
const wrappedDriver = this.wrapDriver(name, driver);
65+
this.stackEngine.registerDriver(wrappedDriver, name === 'default');
6866
}
6967

7068
if (config.connection) {
@@ -91,7 +89,7 @@ export class ObjectQL implements IObjectQL {
9189
name: name,
9290
version: '1.0.0',
9391
async connect() {
94-
// No-op, connection handled in init()
92+
// Driver connection lifecycle is managed separately
9593
},
9694
async disconnect() {
9795
if (driver.disconnect) {
@@ -127,6 +125,9 @@ export class ObjectQL implements IObjectQL {
127125
* Register a new driver with ObjectStack engine
128126
*/
129127
registerDriver(name: string, driver: Driver, isDefault: boolean = false) {
128+
if (this.datasources[name]) {
129+
console.warn(`[ObjectQL] Driver '${name}' already exists. Overwriting...`);
130+
}
130131
this.datasources[name] = driver;
131132
const wrappedDriver = this.wrapDriver(name, driver);
132133
this.stackEngine.registerDriver(wrappedDriver, isDefault);
@@ -273,7 +274,7 @@ export class ObjectQL implements IObjectQL {
273274
async close() {
274275
// Close ObjectStack engine
275276
if (this.stackEngine) {
276-
console.log('[ObjectQL] Closing ObjectStack engine...');
277+
console.log('[ObjectQL] Closing engine...');
277278
await this.stackEngine.destroy();
278279
}
279280

@@ -288,7 +289,7 @@ export class ObjectQL implements IObjectQL {
288289

289290
async init() {
290291
// 0. Initialize ObjectStack engine
291-
console.log('[ObjectQL] Initializing ObjectStack engine...');
292+
console.log('[ObjectQL] Initializing engine...');
292293
await this.stackEngine.init();
293294

294295
// 1. Init Plugins (This allows plugins to register custom loaders)

0 commit comments

Comments
 (0)